home *** CD-ROM | disk | FTP | other *** search
- /*
- * Key Map Editor ver 1.0
- * Process Key Requester
- *
- * parameter: KeyCode - Key Code of key to edit
- * returns: Success - TRUE if key was changed, FALSE if not
- *
- * by: Tim Friest
- * on: January 8, 1989
- */
-
- #include "KME_Includes.h"
- #include <ctype.h>
- #include "KME_Protos.h"
- #include "KME_Defs.h"
- #include "KME_KeyReq.h"
- #include "KME_Globals.h"
-
- struct KeyNode {
- UBYTE Type;
- int Capsable, Repeatable;
- UBYTE AloneOpt;
- UBYTE AloneLen;
- char Alone[33];
- UBYTE ShiftOpt;
- UBYTE ShiftLen;
- char Shift[33];
- UBYTE AltOpt;
- UBYTE AltLen;
- char Alt[33];
- UBYTE ShiftAltOpt;
- UBYTE ShiftAltLen;
- char ShiftAlt[33];
- UBYTE CtrlOpt;
- UBYTE CtrlLen;
- char Ctrl[33];
- UBYTE CtrlShiftOpt;
- UBYTE CtrlShiftLen;
- char CtrlShift[33];
- UBYTE CtrlAltOpt;
- UBYTE CtrlAltLen;
- char CtrlAlt[33];
- UBYTE VanillaOpt;
- UBYTE VanillaLen;
- char Vanilla[33];
- };
-
- extern void InitKeyReq(struct KeyNode *);
- extern struct KeyNode *MakeKeyNode(USHORT);
- extern int ChangeKeyReq(struct KeyNode *, UBYTE);
- extern void ExcludeAccGads(struct Gadget *, struct Gadget *);
- extern void UpdateKey(struct KeyNode *);
- extern void UpdateKeyMap(struct KeyNode *, USHORT);
- extern int ExpandCtrl(unsigned char *, unsigned char *, int);
- extern int CollapseCtrl(char *, char *, int);
-
- int ProcKeyReq(KeyCode)
- USHORT KeyCode;
- {
- struct KeyNode *Key;
- ULONG KeyWind_sf = 0;
- static SHORT KeyReqWindx = KRWLEFTEDGE;
- static SHORT KeyReqWindy = KRWTOPEDGE;
- struct IntuiMessage *Message;
- ULONG Class;
- USHORT Code;
- struct Gadget *Gad;
- int Done = FALSE;
- int Use = FALSE;
-
- if ((Key = MakeKeyNode(KeyCode)) == NULL) {
- CloseWindow(KeyReqWindow);
- return(FALSE);
- }
- InitKeyReq(Key);
- NewKeyReqWindow.LeftEdge = KeyReqWindx;
- NewKeyReqWindow.TopEdge = KeyReqWindy;
- if ((KeyReqWindow = OpenWindow(&NewKeyReqWindow)) == NULL)
- return(FALSE);
- KeyWind_sf = (1<<KeyReqWindow->UserPort->mp_SigBit);
- if (CheckResource(RF_Font))
- SetFont(KeyReqWindow->RPort, TopazFont);
- Done = !Request(&KRRequester, KeyReqWindow);
- while (!Done) {
- while (Wait(KeyWind_sf|Wind_sf) == Wind_sf) {
- while ((Message = (struct IntuiMessage *)GetMsg(KeyMapEdWindow->UserPort)) != NULL)
- ReplyMsg((struct Message *)Message);
- DisplayBeep(KeyReqWindow->WScreen);
- } /* while */
- while ((!Done) && ((Message = (struct IntuiMessage *)GetMsg(KeyReqWindow->UserPort)) != NULL)) {
- Class = Message->Class;
- Code = Message->Code;
- Gad = (struct Gadget *)Message->IAddress;
- ReplyMsg((struct Message *)Message);
- switch (Class) {
- case REQSET:
- break;
- case GADGETUP:
- switch (Gad->GadgetID) {
- case 0xFF: /* Use changes */
- EndRequest(&KRRequester, KeyReqWindow);
- Done = TRUE;
- Use = TRUE;
- break;
- case 0xFE: /* Cancel any changes */
- EndRequest(&KRRequester, KeyReqWindow);
- Done = TRUE;
- break;
- case 0x00: /* switch type to NOP */
- if (Gad->Flags & SELECTED)
- Done = !ChangeKeyReq(Key, KCF_NOP);
- else {
- Gad->Flags |= SELECTED;
- RefreshGList(Gad, KeyReqWindow, &KRRequester, 1);
- }
- break;
- case 0x01: /* switch type to NoQual */
- if (Gad->Flags & SELECTED)
- Done = !ChangeKeyReq(Key, KC_NOQUAL);
- else {
- Gad->Flags |= SELECTED;
- RefreshGList(Gad, KeyReqWindow, &KRRequester, 1);
- }
- break;
- case 0x02: /* switch type to String */
- if (Gad->Flags & SELECTED)
- Done = !ChangeKeyReq(Key, KCF_STRING);
- else {
- Gad->Flags |= SELECTED;
- RefreshGList(Gad, KeyReqWindow, &KRRequester, 1);
- }
- break;
- case 0x03: /* switch type to Dead */
- if (Gad->Flags & SELECTED)
- Done = !ChangeKeyReq(Key, KCF_DEAD);
- else {
- Gad->Flags |= SELECTED;
- RefreshGList(Gad, KeyReqWindow, &KRRequester, 1);
- }
- break;
- case 0x10: /* toggle Shift type */
- UpdateKey(Key);
- if (Gad->Flags & SELECTED)
- Key->Type |= KCF_SHIFT;
- else
- Key->Type &= ~KCF_SHIFT;
- InitKeyReq(Key);
- Done = !Request(&KRRequester, KeyReqWindow);
- break;
- case 0x11: /* toggle Alt type */
- UpdateKey(Key);
- if (Gad->Flags & SELECTED)
- Key->Type |= KCF_ALT;
- else
- Key->Type &= ~KCF_ALT;
- InitKeyReq(Key);
- Done = !Request(&KRRequester, KeyReqWindow);
- break;
- case 0x12: /* toggle Ctrl type */
- UpdateKey(Key);
- if (Gad->Flags & SELECTED)
- Key->Type |= KCF_CONTROL;
- else
- Key->Type &= ~KCF_CONTROL;
- InitKeyReq(Key);
- Done = !Request(&KRRequester, KeyReqWindow);
- break;
- case 0x13: /* toggle Capsable */
- if (Gad->Flags & SELECTED)
- Key->Capsable = TRUE;
- else
- Key->Capsable = FALSE;
- break;
- case 0x14: /* toggle Repeatable */
- if (Gad->Flags & SELECTED)
- Key->Repeatable = TRUE;
- else
- Key->Repeatable = FALSE;
- break;
- case 0x40: /* Alone Mod gadget */
- UpdateKey(Key);
- if (Gad->Flags & SELECTED)
- Key->AloneOpt = DPF_MOD;
- else
- Key->AloneOpt = KC_NOQUAL;
- InitKeyReq(Key);
- Done = !Request(&KRRequester, KeyReqWindow);
- break;
- case 0x41: /* Alone Dead gadget */
- UpdateKey(Key);
- if (Gad->Flags & SELECTED)
- Key->AloneOpt = DPF_DEAD;
- else
- Key->AloneOpt = KC_NOQUAL;
- InitKeyReq(Key);
- Done = !Request(&KRRequester, KeyReqWindow);
- break;
- case 0x49: /* Alone Acc1 Gadget */
- case 0x4A: /* Alone Acc2 Gadget */
- case 0x4B: /* Alone Acc3 Gadget */
- case 0x4C: /* Alone Acc4 Gadget */
- case 0x4D: /* Alone Acc5 Gadget */
- ExcludeAccGads(&KRDAloneAcc1Gadget, Gad);
- break;
- case 0x50: /* Shift Mod gadget */
- UpdateKey(Key);
- if (Gad->Flags & SELECTED)
- Key->ShiftOpt = DPF_MOD;
- else
- Key->ShiftOpt = KC_NOQUAL;
- InitKeyReq(Key);
- Done = !Request(&KRRequester, KeyReqWindow);
- break;
- case 0x51: /* Shift Dead gadget */
- UpdateKey(Key);
- if (Gad->Flags & SELECTED)
- Key->ShiftOpt = DPF_DEAD;
- else
- Key->ShiftOpt = KC_NOQUAL;
- InitKeyReq(Key);
- Done = !Request(&KRRequester, KeyReqWindow);
- break;
- case 0x59: /* Shift Acc1 Gadget */
- case 0x5A: /* Shift Acc2 Gadget */
- case 0x5B: /* Shift Acc3 Gadget */
- case 0x5C: /* Shift Acc4 Gadget */
- case 0x5D: /* Shift Acc5 Gadget */
- ExcludeAccGads(&KRDShiftAcc1Gadget, Gad);
- break;
- case 0x60: /* Alt Mod gadget */
- UpdateKey(Key);
- if (Gad->Flags & SELECTED)
- Key->AltOpt = DPF_MOD;
- else
- Key->AltOpt = KC_NOQUAL;
- InitKeyReq(Key);
- Done = !Request(&KRRequester, KeyReqWindow);
- break;
- case 0x61: /* Alt Dead gadget */
- UpdateKey(Key);
- if (Gad->Flags & SELECTED)
- Key->AltOpt = DPF_DEAD;
- else
- Key->AltOpt = KC_NOQUAL;
- InitKeyReq(Key);
- Done = !Request(&KRRequester, KeyReqWindow);
- break;
- case 0x69: /* Alt Acc1 Gadget */
- case 0x6A: /* Alt Acc2 Gadget */
- case 0x6B: /* Alt Acc3 Gadget */
- case 0x6C: /* Alt Acc4 Gadget */
- case 0x6D: /* Alt Acc5 Gadget */
- ExcludeAccGads(&KRDAltAcc1Gadget, Gad);
- break;
- case 0x70: /* ShiftAlt Mod gadget */
- UpdateKey(Key);
- if (Gad->Flags & SELECTED)
- Key->ShiftAltOpt = DPF_MOD;
- else
- Key->ShiftAltOpt = KC_NOQUAL;
- InitKeyReq(Key);
- Done = !Request(&KRRequester, KeyReqWindow);
- break;
- case 0x71: /* ShiftAlt Dead gadget */
- UpdateKey(Key);
- if (Gad->Flags & SELECTED)
- Key->ShiftAltOpt = DPF_DEAD;
- else
- Key->ShiftAltOpt = KC_NOQUAL;
- InitKeyReq(Key);
- Done = !Request(&KRRequester, KeyReqWindow);
- break;
- case 0x79: /* ShiftAlt Acc1 Gadget */
- case 0x7A: /* ShiftAlt Acc2 Gadget */
- case 0x7B: /* ShiftAlt Acc3 Gadget */
- case 0x7C: /* ShiftAlt Acc4 Gadget */
- case 0x7D: /* ShiftAlt Acc5 Gadget */
- ExcludeAccGads(&KRDShiftAltAcc1Gadget, Gad);
- break;
- case 0x80: /* Ctrl Mod gadget */
- UpdateKey(Key);
- if (Gad->Flags & SELECTED)
- Key->CtrlOpt = DPF_MOD;
- else
- Key->CtrlOpt = KC_NOQUAL;
- InitKeyReq(Key);
- Done = !Request(&KRRequester, KeyReqWindow);
- break;
- case 0x81: /* Ctrl Dead gadget */
- UpdateKey(Key);
- if (Gad->Flags & SELECTED)
- Key->CtrlOpt = DPF_DEAD;
- else
- Key->CtrlOpt = KC_NOQUAL;
- InitKeyReq(Key);
- Done = !Request(&KRRequester, KeyReqWindow);
- break;
- case 0x89: /* Ctrl Acc1 Gadget */
- case 0x8A: /* Ctrl Acc2 Gadget */
- case 0x8B: /* Ctrl Acc3 Gadget */
- case 0x8C: /* Ctrl Acc4 Gadget */
- case 0x8D: /* Ctrl Acc5 Gadget */
- ExcludeAccGads(&KRDCtrlAcc1Gadget, Gad);
- break;
- case 0x90: /* CtrlShift Mod gadget */
- UpdateKey(Key);
- if (Gad->Flags & SELECTED)
- Key->CtrlShiftOpt = DPF_MOD;
- else
- Key->CtrlShiftOpt = KC_NOQUAL;
- InitKeyReq(Key);
- Done = !Request(&KRRequester, KeyReqWindow);
- break;
- case 0x91: /* CtrlShift Dead gadget */
- UpdateKey(Key);
- if (Gad->Flags & SELECTED)
- Key->CtrlShiftOpt = DPF_DEAD;
- else
- Key->CtrlShiftOpt = KC_NOQUAL;
- InitKeyReq(Key);
- Done = !Request(&KRRequester, KeyReqWindow);
- break;
- case 0x99: /* CtrlShift Acc1 Gadget */
- case 0x9A: /* CtrlShift Acc2 Gadget */
- case 0x9B: /* CtrlShift Acc3 Gadget */
- case 0x9C: /* CtrlShift Acc4 Gadget */
- case 0x9D: /* CtrlShift Acc5 Gadget */
- ExcludeAccGads(&KRDCtrlShiftAcc1Gadget, Gad);
- break;
- case 0xA0: /* CtrlAlt Mod gadget */
- UpdateKey(Key);
- if (Gad->Flags & SELECTED)
- Key->CtrlAltOpt = DPF_MOD;
- else
- Key->CtrlAltOpt = KC_NOQUAL;
- InitKeyReq(Key);
- Done = !Request(&KRRequester, KeyReqWindow);
- break;
- case 0xA1: /* CtrlAlt Dead gadget */
- UpdateKey(Key);
- if (Gad->Flags & SELECTED)
- Key->CtrlAltOpt = DPF_DEAD;
- else
- Key->CtrlAltOpt = KC_NOQUAL;
- InitKeyReq(Key);
- Done = !Request(&KRRequester, KeyReqWindow);
- break;
- case 0xA9: /* CtrlAlt Acc1 Gadget */
- case 0xAA: /* CtrlAlt Acc2 Gadget */
- case 0xAB: /* CtrlAlt Acc3 Gadget */
- case 0xAC: /* CtrlAlt Acc4 Gadget */
- case 0xAD: /* CtrlAlt Acc5 Gadget */
- ExcludeAccGads(&KRDCtrlAltAcc1Gadget, Gad);
- break;
- case 0xB0: /* Vanilla Mod gadget */
- UpdateKey(Key);
- if (Gad->Flags & SELECTED)
- Key->VanillaOpt = DPF_MOD;
- else
- Key->VanillaOpt = KC_NOQUAL;
- InitKeyReq(Key);
- Done = !Request(&KRRequester, KeyReqWindow);
- break;
- case 0xB1: /* Vanilla Dead gadget */
- UpdateKey(Key);
- if (Gad->Flags & SELECTED)
- Key->VanillaOpt = DPF_DEAD;
- else
- Key->VanillaOpt = KC_NOQUAL;
- InitKeyReq(Key);
- Done = !Request(&KRRequester, KeyReqWindow);
- break;
- case 0xB9: /* Vanilla Acc1 Gadget */
- case 0xBA: /* Vanilla Acc2 Gadget */
- case 0xBB: /* Vanilla Acc3 Gadget */
- case 0xBC: /* Vanilla Acc4 Gadget */
- case 0xBD: /* Vanilla Acc5 Gadget */
- ExcludeAccGads(&KRDVanillaAcc1Gadget, Gad);
- break;
- } /* switch */
- } /* switch */
- } /* while */
- } /* while */
- KeyReqWindx = KeyReqWindow->LeftEdge;
- KeyReqWindy = KeyReqWindow->TopEdge;
- CloseWindow(KeyReqWindow);
- if (Use) {
- UpdateKey(Key);
- UpdateKeyMap(Key, KeyCode);
- SetFlag(SF_Modified);
- }
- FreeMem(Key, sizeof(struct KeyNode));
- return(Use);
- }
-
- /*
- * Change Key Requester
- */
- int ChangeKeyReq(Key, Type)
- struct KeyNode *Key;
- UBYTE Type;
- {
- EndRequest(&KRRequester, KeyReqWindow);
- UpdateKey(Key);
- Key->Type &= ~(KCF_STRING|KCF_DEAD|KCF_NOP);
- Key->Type |= Type;
- InitKeyReq(Key);
- return(Request(&KRRequester, KeyReqWindow));
- }
-
- /*
- * Exclude Accent Gadgets
- */
- void ExcludeAccGads(AccentList, AccGad)
- struct Gadget *AccentList;
- struct Gadget *AccGad;
- {
- int pos, count;
- struct Gadget *tempgad;
-
- pos = RemoveGList(KeyReqWindow, AccentList, 5);
- if (AccGad->Flags & SELECTED)
- for (tempgad = AccentList, count = 0; (count < 5) && (tempgad != NULL); tempgad = tempgad->NextGadget, count++)
- tempgad->Flags &= ~SELECTED;
- AccGad->Flags |= SELECTED;
- AddGList(KeyReqWindow, AccentList, pos, 5, &KRRequester);
- RefreshGList(AccentList, KeyReqWindow, &KRRequester, 5);
- }
-
- /*
- * Make the Key Node
- */
- struct KeyNode *MakeKeyNode(KeyCode)
- USHORT KeyCode;
- {
- struct KeyNode *Key;
- struct HalfKeyMap *HalfKeyMap;
- UBYTE *KeyMapVal;
- UBYTE *KeyMapPtr;
-
- if ((Key = (struct KeyNode *)AllocMem(sizeof(struct KeyNode), MEMF_CLEAR)) == NULL)
- return(Key);
- if (KeyCode < 0x40)
- HalfKeyMap = (struct HalfKeyMap *)&KeyMapNode->kn_KeyMap;
- else {
- HalfKeyMap = (struct HalfKeyMap *)&KeyMapNode->kn_KeyMap.km_HiKeyMapTypes;
- KeyCode -= 0x40;
- }
- Key->Type = HalfKeyMap->KeyMapTypes[KeyCode];
- Key->Capsable = (HalfKeyMap->Capsable[KeyCode/8] & (1<<(KeyCode % 8)));
- Key->Repeatable = (HalfKeyMap->Repeatable[KeyCode/8] & (1<<(KeyCode % 8)));
- KeyMapVal = (UBYTE *)&HalfKeyMap->KeyMap[KeyCode];
- KeyMapPtr = (UBYTE *)HalfKeyMap->KeyMap[KeyCode];
- switch (Key->Type & (KCF_STRING|KCF_DEAD|KCF_NOP)) {
- case KC_NOQUAL:
- switch (Key->Type & KC_VANILLA) {
- case KC_NOQUAL:
- Key->AloneLen = 1;
- Key->Alone[0] = KeyMapVal[3];
- break;
- case KCF_SHIFT:
- Key->AloneLen = 1;
- Key->Alone[0] = KeyMapVal[3];
- Key->ShiftLen = 1;
- Key->Shift[0] = KeyMapVal[2];
- break;
- case KCF_ALT:
- Key->AloneLen = 1;
- Key->Alone[0] = KeyMapVal[3];
- Key->AltLen = 1;
- Key->Alt[0] = KeyMapVal[2];
- break;
- case KCF_SHIFT|KCF_ALT:
- Key->AloneLen = 1;
- Key->Alone[0] = KeyMapVal[3];
- Key->ShiftLen = 1;
- Key->Shift[0] = KeyMapVal[2];
- Key->AltLen = 1;
- Key->Alt[0] = KeyMapVal[1];
- Key->ShiftAltLen = 1;
- Key->ShiftAlt[0] = KeyMapVal[0];;
- break;
- case KCF_CONTROL:
- Key->AloneLen = 1;
- Key->Alone[0] = KeyMapVal[3];
- Key->CtrlLen = 1;
- Key->Ctrl[0] = KeyMapVal[2];
- break;
- case KCF_CONTROL|KCF_SHIFT:
- Key->AloneLen = 1;
- Key->Alone[0] = KeyMapVal[3];
- Key->ShiftLen = 1;
- Key->Shift[0] = KeyMapVal[2];
- Key->CtrlLen = 1;
- Key->Ctrl[0] = KeyMapVal[1];
- Key->CtrlShiftLen = 1;
- Key->CtrlShift[0] = KeyMapVal[0];
- break;
- case KCF_CONTROL|KCF_ALT:
- Key->AloneLen = 1;
- Key->Alone[0] = KeyMapVal[3];
- Key->AltLen = 1;
- Key->Alt[0] = KeyMapVal[2];
- Key->CtrlLen = 1;
- Key->Ctrl[0] = KeyMapVal[1];
- Key->CtrlAltLen = 1;
- Key->CtrlAlt[0] = KeyMapVal[0];
- break;
- case KC_VANILLA:
- Key->AloneLen = 1;
- Key->Alone[0] = KeyMapVal[3];
- Key->ShiftLen = 1;
- Key->Shift[0] = KeyMapVal[2];
- Key->AltLen = 1;
- Key->Alt[0] = KeyMapVal[1];
- Key->ShiftAltLen = 1;
- Key->ShiftAlt[0] = KeyMapVal[0];
- } /* switch */
- break;
- case KCF_STRING:
- switch (Key->Type & KC_VANILLA) {
- case KC_NOQUAL:
- Key->AloneLen = KeyMapPtr[0];
- memcpy(Key->Alone, (KeyMapPtr+KeyMapPtr[1]), Key->AloneLen);
- break;
- case KCF_SHIFT:
- Key->AloneLen = KeyMapPtr[0];
- memcpy(Key->Alone, (KeyMapPtr+KeyMapPtr[1]), Key->AloneLen);
- Key->ShiftLen = KeyMapPtr[2];
- memcpy(Key->Shift, (KeyMapPtr+KeyMapPtr[3]), Key->ShiftLen);
- break;
- case KCF_ALT:
- Key->AloneLen = KeyMapPtr[0];
- memcpy(Key->Alone, (KeyMapPtr+KeyMapPtr[1]), Key->AloneLen);
- Key->AltLen = KeyMapPtr[2];
- memcpy(Key->Alt, (KeyMapPtr+KeyMapPtr[3]), Key->AltLen);
- break;
- case KCF_SHIFT|KCF_ALT:
- Key->AloneLen = KeyMapPtr[0];
- memcpy(Key->Alone, (KeyMapPtr+KeyMapPtr[1]), Key->AloneLen);
- Key->ShiftLen = KeyMapPtr[2];
- memcpy(Key->Shift, (KeyMapPtr+KeyMapPtr[3]), Key->ShiftLen);
- Key->AltLen = KeyMapPtr[4];
- memcpy(Key->Alt, (KeyMapPtr+KeyMapPtr[5]), Key->AltLen);
- Key->ShiftAltLen = KeyMapPtr[6];
- memcpy(Key->ShiftAlt, (KeyMapPtr+KeyMapPtr[7]), Key->ShiftAltLen);
- break;
- case KCF_CONTROL:
- Key->AloneLen = KeyMapPtr[0];
- memcpy(Key->Alone, (KeyMapPtr+KeyMapPtr[1]), Key->AloneLen);
- Key->CtrlLen = KeyMapPtr[2];
- memcpy(Key->Ctrl, (KeyMapPtr+KeyMapPtr[3]), Key->CtrlLen);
- break;
- case KCF_CONTROL|KCF_SHIFT:
- Key->AloneLen = KeyMapPtr[0];
- memcpy(Key->Alone, (KeyMapPtr+KeyMapPtr[1]), Key->AloneLen);
- Key->ShiftLen = KeyMapPtr[2];
- memcpy(Key->Shift, (KeyMapPtr+KeyMapPtr[3]), Key->ShiftLen);
- Key->CtrlLen = KeyMapPtr[4];
- memcpy(Key->Ctrl, (KeyMapPtr+KeyMapPtr[5]), Key->CtrlLen);
- Key->CtrlShiftLen = KeyMapPtr[6];
- memcpy(Key->CtrlShift, (KeyMapPtr+KeyMapPtr[7]), Key->CtrlShiftLen);
- break;
- case KCF_CONTROL|KCF_ALT:
- Key->AloneLen = KeyMapPtr[0];
- memcpy(Key->Alone, (KeyMapPtr+KeyMapPtr[1]), Key->AloneLen);
- Key->AltLen = KeyMapPtr[2];
- memcpy(Key->Alt, (KeyMapPtr+KeyMapPtr[3]), Key->AltLen);
- Key->CtrlLen = KeyMapPtr[4];
- memcpy(Key->Ctrl, (KeyMapPtr+KeyMapPtr[5]), Key->CtrlLen);
- Key->CtrlAltLen = KeyMapPtr[6];
- memcpy(Key->CtrlAlt, (KeyMapPtr+KeyMapPtr[7]), Key->CtrlAltLen);
- break;
- case KC_VANILLA:
- Key->AloneLen = KeyMapPtr[0];
- memcpy(Key->Alone, (KeyMapPtr+KeyMapPtr[1]), Key->AloneLen);
- Key->ShiftLen = KeyMapPtr[2];
- memcpy(Key->Shift, (KeyMapPtr+KeyMapPtr[3]), Key->ShiftLen);
- Key->AltLen = KeyMapPtr[4];
- memcpy(Key->Alt, (KeyMapPtr+KeyMapPtr[5]), Key->AltLen);
- Key->ShiftAltLen = KeyMapPtr[6];
- memcpy(Key->ShiftAlt, (KeyMapPtr+KeyMapPtr[7]), Key->ShiftAltLen);
- Key->CtrlLen = KeyMapPtr[8];
- memcpy(Key->Ctrl, (KeyMapPtr+KeyMapPtr[9]), Key->CtrlLen);
- Key->CtrlShiftLen = KeyMapPtr[10];
- memcpy(Key->CtrlShift, (KeyMapPtr+KeyMapPtr[11]), Key->CtrlShiftLen);
- Key->CtrlAltLen = KeyMapPtr[12];
- memcpy(Key->CtrlAlt, (KeyMapPtr+KeyMapPtr[13]), Key->CtrlAltLen);
- Key->VanillaLen = KeyMapPtr[14];
- memcpy(Key->Vanilla, (KeyMapPtr+KeyMapPtr[15]), Key->VanillaLen);
- } /* switch */
- break;
- case KCF_DEAD:
- switch (Key->Type & KC_VANILLA) {
- case KC_NOQUAL:
- Key->AloneOpt = KeyMapPtr[0];
- switch (Key->AloneOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- Key->AloneLen = 1;
- Key->Alone[0] = KeyMapPtr[1];
- break;
- case DPF_MOD:
- Key->AloneLen = 6;
- memcpy(Key->Alone, (KeyMapPtr+KeyMapPtr[1]), 6);
- } /* switch */
- break;
- case KCF_SHIFT:
- Key->AloneOpt = KeyMapPtr[0];
- switch (Key->AloneOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- Key->AloneLen = 1;
- Key->Alone[0] = KeyMapPtr[1];
- break;
- case DPF_MOD:
- Key->AloneLen = 6;
- memcpy(Key->Alone, (KeyMapPtr+KeyMapPtr[1]), 6);
- } /* switch */
- Key->ShiftOpt = KeyMapPtr[2];
- switch (Key->ShiftOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- Key->ShiftLen = 1;
- Key->Shift[0] = KeyMapPtr[3];
- break;
- case DPF_MOD:
- Key->ShiftLen = 6;
- memcpy(Key->Shift, (KeyMapPtr+KeyMapPtr[3]), 6);
- } /* switch */
- break;
- case KCF_ALT:
- Key->AloneOpt = KeyMapPtr[0];
- switch (Key->AloneOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- Key->AloneLen = 1;
- Key->Alone[0] = KeyMapPtr[1];
- break;
- case DPF_MOD:
- Key->AloneLen = 6;
- memcpy(Key->Alone, (KeyMapPtr+KeyMapPtr[1]), 6);
- } /* switch */
- Key->AltOpt = KeyMapPtr[2];
- switch (Key->AltOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- Key->AltLen = 1;
- Key->Alt[0] = KeyMapPtr[3];
- break;
- case DPF_MOD:
- Key->AltLen = 6;
- memcpy(Key->Alt, (KeyMapPtr+KeyMapPtr[3]), 6);
- } /* switch */
- break;
- case KCF_SHIFT|KCF_ALT:
- Key->AloneOpt = KeyMapPtr[0];
- switch (Key->AloneOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- Key->AloneLen = 1;
- Key->Alone[0] = KeyMapPtr[1];
- break;
- case DPF_MOD:
- Key->AloneLen = 6;
- memcpy(Key->Alone, (KeyMapPtr+KeyMapPtr[1]), 6);
- } /* switch */
- Key->ShiftOpt = KeyMapPtr[2];
- switch (Key->ShiftOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- Key->ShiftLen = 1;
- Key->Shift[0] = KeyMapPtr[3];
- break;
- case DPF_MOD:
- Key->ShiftLen = 6;
- memcpy(Key->Shift, (KeyMapPtr+KeyMapPtr[3]), 6);
- } /* switch */
- Key->AltOpt = KeyMapPtr[4];
- switch (Key->AltOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- Key->AltLen = 1;
- Key->Alt[0] = KeyMapPtr[5];
- break;
- case DPF_MOD:
- Key->AltLen = 6;
- memcpy(Key->Alt, (KeyMapPtr+KeyMapPtr[5]), 6);
- } /* switch */
- Key->ShiftAltOpt = KeyMapPtr[6];
- switch (Key->ShiftAltOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- Key->ShiftAltLen = 1;
- Key->ShiftAlt[0] = KeyMapPtr[7];
- break;
- case DPF_MOD:
- Key->ShiftAltLen = 6;
- memcpy(Key->ShiftAlt, (KeyMapPtr+KeyMapPtr[7]), 6);
- } /* switch */
- break;
- case KCF_CONTROL:
- Key->AloneOpt = KeyMapPtr[0];
- switch (Key->AloneOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- Key->AloneLen = 1;
- Key->Alone[0] = KeyMapPtr[1];
- break;
- case DPF_MOD:
- Key->AloneLen = 6;
- memcpy(Key->Alone, (KeyMapPtr+KeyMapPtr[1]), 6);
- } /* switch */
- Key->CtrlOpt = KeyMapPtr[2];
- switch (Key->CtrlOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- Key->CtrlLen = 1;
- Key->Ctrl[0] = KeyMapPtr[3];
- break;
- case DPF_MOD:
- Key->CtrlLen = 6;
- memcpy(Key->Ctrl, (KeyMapPtr+KeyMapPtr[3]), 6);
- } /* switch */
- break;
- case KCF_CONTROL|KCF_SHIFT:
- Key->AloneOpt = KeyMapPtr[0];
- switch (Key->AloneOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- Key->AloneLen = 1;
- Key->Alone[0] = KeyMapPtr[1];
- break;
- case DPF_MOD:
- Key->AloneLen = 6;
- memcpy(Key->Alone, (KeyMapPtr+KeyMapPtr[1]), 6);
- } /* switch */
- Key->ShiftOpt = KeyMapPtr[2];
- switch (Key->ShiftOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- Key->ShiftLen = 1;
- Key->Shift[0] = KeyMapPtr[3];
- break;
- case DPF_MOD:
- Key->ShiftLen = 6;
- memcpy(Key->Shift, (KeyMapPtr+KeyMapPtr[3]), 6);
- } /* switch */
- Key->CtrlOpt = KeyMapPtr[4];
- switch (Key->CtrlOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- Key->CtrlLen = 1;
- Key->Ctrl[0] = KeyMapPtr[5];
- break;
- case DPF_MOD:
- Key->CtrlLen = 6;
- memcpy(Key->Ctrl, (KeyMapPtr+KeyMapPtr[5]), 6);
- } /* switch */
- Key->CtrlShiftOpt = KeyMapPtr[6];
- switch (Key->CtrlShiftOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- Key->CtrlShiftLen = 1;
- Key->CtrlShift[0] = KeyMapPtr[7];
- break;
- case DPF_MOD:
- Key->CtrlShiftLen = 6;
- memcpy(Key->CtrlShift, (KeyMapPtr+KeyMapPtr[7]), 6);
- } /* switch */
- break;
- case KCF_CONTROL|KCF_ALT:
- Key->AloneOpt = KeyMapPtr[0];
- switch (Key->AloneOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- Key->AloneLen = 1;
- Key->Alone[0] = KeyMapPtr[1];
- break;
- case DPF_MOD:
- Key->AloneLen = 6;
- memcpy(Key->Alone, (KeyMapPtr+KeyMapPtr[1]), 6);
- } /* switch */
- Key->AltOpt = KeyMapPtr[2];
- switch (Key->AltOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- Key->AltLen = 1;
- Key->Alt[0] = KeyMapPtr[3];
- break;
- case DPF_MOD:
- Key->AltLen = 6;
- memcpy(Key->Alt, (KeyMapPtr+KeyMapPtr[3]), 6);
- } /* switch */
- Key->CtrlOpt = KeyMapPtr[4];
- switch (Key->CtrlOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- Key->CtrlLen = 1;
- Key->Ctrl[0] = KeyMapPtr[5];
- break;
- case DPF_MOD:
- Key->CtrlLen = 6;
- memcpy(Key->Ctrl, (KeyMapPtr+KeyMapPtr[5]), 6);
- } /* switch */
- Key->CtrlAltOpt = KeyMapPtr[6];
- switch (Key->CtrlAltOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- Key->CtrlAltLen = 1;
- Key->CtrlAlt[0] = KeyMapPtr[7];
- break;
- case DPF_MOD:
- Key->CtrlAltLen = 6;
- memcpy(Key->CtrlAlt, (KeyMapPtr+KeyMapPtr[7]), 6);
- } /* switch */
- break;
- case KC_VANILLA:
- Key->AloneOpt = KeyMapPtr[0];
- switch (Key->AloneOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- Key->AloneLen = 1;
- Key->Alone[0] = KeyMapPtr[1];
- break;
- case DPF_MOD:
- Key->AloneLen = 6;
- memcpy(Key->Alone, (KeyMapPtr+KeyMapPtr[1]), 6);
- } /* switch */
- Key->ShiftOpt = KeyMapPtr[2];
- switch (Key->ShiftOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- Key->ShiftLen = 1;
- Key->Shift[0] = KeyMapPtr[3];
- break;
- case DPF_MOD:
- Key->ShiftLen = 6;
- memcpy(Key->Shift, (KeyMapPtr+KeyMapPtr[3]), 6);
- } /* switch */
- Key->AltOpt = KeyMapPtr[4];
- switch (Key->AltOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- Key->AltLen = 1;
- Key->Alt[0] = KeyMapPtr[5];
- break;
- case DPF_MOD:
- Key->AltLen = 6;
- memcpy(Key->Alt, (KeyMapPtr+KeyMapPtr[5]), 6);
- } /* switch */
- Key->ShiftAltOpt = KeyMapPtr[6];
- switch (Key->ShiftAltOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- Key->ShiftAltLen = 1;
- Key->ShiftAlt[0] = KeyMapPtr[7];
- break;
- case DPF_MOD:
- Key->ShiftAltLen = 6;
- memcpy(Key->ShiftAlt, (KeyMapPtr+KeyMapPtr[7]), 6);
- } /* switch */
- Key->CtrlOpt = KeyMapPtr[8];
- switch (Key->CtrlOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- Key->CtrlLen = 1;
- Key->Ctrl[0] = KeyMapPtr[9];
- break;
- case DPF_MOD:
- Key->CtrlLen = 6;
- memcpy(Key->Ctrl, (KeyMapPtr+KeyMapPtr[9]), 6);
- } /* switch */
- Key->CtrlShiftOpt = KeyMapPtr[10];
- switch (Key->CtrlShiftOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- Key->CtrlShiftLen = 1;
- Key->CtrlShift[0] = KeyMapPtr[11];
- break;
- case DPF_MOD:
- Key->CtrlShiftLen = 6;
- memcpy(Key->CtrlShift, (KeyMapPtr+KeyMapPtr[11]), 6);
- } /* switch */
- Key->CtrlAltOpt = KeyMapPtr[12];
- switch (Key->CtrlAltOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- Key->CtrlAltLen = 1;
- Key->CtrlAlt[0] = KeyMapPtr[13];
- break;
- case DPF_MOD:
- Key->CtrlAltLen = 6;
- memcpy(Key->CtrlAlt, (KeyMapPtr+KeyMapPtr[13]), 6);
- } /* switch */
- Key->VanillaOpt = KeyMapPtr[14];
- switch (Key->VanillaOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- Key->VanillaLen = 1;
- Key->Vanilla[0] = KeyMapPtr[15];
- break;
- case DPF_MOD:
- Key->VanillaLen = 6;
- memcpy(Key->Vanilla, (KeyMapPtr+KeyMapPtr[15]), 6);
- } /* switch */
- } /* switch */
- break;
- case KCF_NOP:
- break;
- } /* switch */
- return(Key);
- }
-
- /*
- * Initialize requester for type of key
- */
- void InitKeyReq(Key)
- struct KeyNode *Key;
- {
- switch(Key->Type & (KCF_STRING|KCF_DEAD|KCF_NOP)) {
- case KC_NOQUAL:
- KRNOPGadget.Flags &= ~SELECTED;
- KRNoQualGadget.Flags |= SELECTED;
- KRStringGadget.Flags &= ~SELECTED;
- KRDeadGadget.Flags &= ~SELECTED;
- KRRepeatableGadget.NextGadget = KRNormalGadgetList;
- KRRequester.ReqText = KRNormalITextList;
-
- KRNAloneStrGadSInfo.BufferPos = ExpandCtrl(KRNAloneStrGadSIBuff, Key->Alone, 1);
- if (Key->Type & KCF_SHIFT) {
- KRNormalIText1.IText = KRShiftString;
- KRNOpt1StrGadget.Flags &= ~GADGDISABLED;
- KRNOpt1StrGadSInfo.BufferPos = ExpandCtrl(KRNOpt1StrGadSIBuff, Key->Shift, 1);
- }
- else if (Key->Type & KCF_ALT) {
- KRNormalIText1.IText = KRAltString;
- KRNOpt1StrGadget.Flags &= ~GADGDISABLED;
- KRNOpt1StrGadSInfo.BufferPos = ExpandCtrl(KRNOpt1StrGadSIBuff, Key->Alt, 1);
- }
- else if (Key->Type & KCF_CONTROL) {
- KRNormalIText1.IText = KRCtrlString;
- KRNOpt1StrGadget.Flags &= ~GADGDISABLED;
- KRNOpt1StrGadSInfo.BufferPos = ExpandCtrl(KRNOpt1StrGadSIBuff, Key->Ctrl, 1);
- }
- else {
- KRNormalIText1.IText = NULL;
- KRNOpt1StrGadget.Flags |= GADGDISABLED;
- KRNOpt1StrGadSIBuff[0] = '\x00';
- KRNOpt1StrGadSInfo.BufferPos = 0;
- }
- if ((Key->Type & KCF_ALT) && (Key->Type & KCF_SHIFT)) {
- KRNormalIText2.IText = KRAltString;
- KRNOpt2StrGadget.Flags &= ~GADGDISABLED;
- KRNOpt2StrGadSInfo.BufferPos = ExpandCtrl(KRNOpt2StrGadSIBuff, Key->Alt, 1);
- }
- else if ((Key->Type & KCF_CONTROL) && (Key->Type & (KCF_SHIFT|KCF_ALT))) {
- KRNormalIText2.IText = KRCtrlString;
- KRNOpt2StrGadget.Flags &= ~GADGDISABLED;
- KRNOpt2StrGadSInfo.BufferPos = ExpandCtrl(KRNOpt2StrGadSIBuff, Key->Ctrl, 1);
- }
- else {
- KRNormalIText2.IText = NULL;
- KRNOpt2StrGadget.Flags |= GADGDISABLED;
- KRNOpt2StrGadSIBuff[0] = '\x00';
- KRNOpt2StrGadSInfo.BufferPos = 0;
- }
- if ((Key->Type & (KCF_SHIFT|KCF_ALT)) == (KCF_SHIFT|KCF_ALT)) {
- KRNormalIText3.IText = KRShiftAltString;
- KRNOpt3StrGadget.Flags &= ~GADGDISABLED;
- KRNOpt3StrGadSInfo.BufferPos = ExpandCtrl(KRNOpt3StrGadSIBuff, Key->ShiftAlt, 1);
- }
- else if ((Key->Type & (KCF_CONTROL|KCF_SHIFT)) == (KCF_CONTROL|KCF_SHIFT)) {
- KRNormalIText3.IText = KRCtrlShiftString;
- KRNOpt3StrGadget.Flags &= ~GADGDISABLED;
- KRNOpt3StrGadSInfo.BufferPos = ExpandCtrl(KRNOpt3StrGadSIBuff, Key->CtrlShift, 1);
- }
- else if ((Key->Type & (KCF_CONTROL|KCF_ALT)) == (KCF_CONTROL|KCF_ALT)) {
- KRNormalIText3.IText = KRCtrlAltString;
- KRNOpt3StrGadget.Flags &= ~GADGDISABLED;
- KRNOpt3StrGadSInfo.BufferPos = ExpandCtrl(KRNOpt3StrGadSIBuff, Key->CtrlAlt, 1);
- }
- else {
- KRNormalIText3.IText = NULL;
- KRNOpt3StrGadget.Flags |= GADGDISABLED;
- KRNOpt3StrGadSIBuff[0] = '\x00';
- KRNOpt3StrGadSInfo.BufferPos = 0;
- }
- break;
- case KCF_STRING:
- KRNOPGadget.Flags &= ~SELECTED;
- KRNoQualGadget.Flags &= ~SELECTED;
- KRStringGadget.Flags |= SELECTED;
- KRDeadGadget.Flags &= ~SELECTED;
- KRRepeatableGadget.NextGadget = KRStringGadgetList;
- KRRequester.ReqText = KRStringITextList;
-
- KRSAloneStrGadSInfo.BufferPos = ExpandCtrl(KRSAloneStrGadSIBuff, Key->Alone, Key->AloneLen);
- if (Key->Type & KCF_SHIFT) {
- KRSShiftStrGadget.Flags &= ~GADGDISABLED;
- KRSShiftStrGadSInfo.BufferPos = ExpandCtrl(KRSShiftStrGadSIBuff, Key->Shift, Key->ShiftLen);
- }
- else {
- KRSShiftStrGadget.Flags |= GADGDISABLED;
- KRSShiftStrGadSIBuff[0] = '\x00';
- KRSShiftStrGadSInfo.BufferPos = 0;
- }
- if (Key->Type & KCF_ALT) {
- KRSAltStrGadget.Flags &= ~GADGDISABLED;
- KRSAltStrGadSInfo.BufferPos = ExpandCtrl(KRSAltStrGadSIBuff, Key->Alt, Key->AltLen);
- }
- else {
- KRSAltStrGadget.Flags |= GADGDISABLED;
- KRSAltStrGadSIBuff[0] = '\x00';
- KRSAltStrGadSInfo.BufferPos = 0;
- }
- if ((Key->Type & (KCF_SHIFT|KCF_ALT)) == (KCF_SHIFT|KCF_ALT)) {
- KRSShiftAltStrGadget.Flags &= ~GADGDISABLED;
- KRSShiftAltStrGadSInfo.BufferPos = ExpandCtrl(KRSShiftAltStrGadSIBuff, Key->ShiftAlt, Key->ShiftAltLen);
- }
- else {
- KRSShiftAltStrGadget.Flags |= GADGDISABLED;
- KRSShiftAltStrGadSIBuff[0] = '\x00';
- KRSShiftAltStrGadSInfo.BufferPos = 0;
- }
- if (Key->Type & KCF_CONTROL) {
- KRSCtrlStrGadget.Flags &= ~GADGDISABLED;
- KRSCtrlStrGadSInfo.BufferPos = ExpandCtrl(KRSCtrlStrGadSIBuff, Key->Ctrl, Key->CtrlLen);
- }
- else {
- KRSCtrlStrGadget.Flags |= GADGDISABLED;
- KRSCtrlStrGadSIBuff[0] = '\x00';
- KRSCtrlStrGadSInfo.BufferPos = 0;
- }
- if ((Key->Type & (KCF_CONTROL|KCF_SHIFT)) == (KCF_CONTROL|KCF_SHIFT)) {
- KRSCtrlShiftStrGadget.Flags &= ~GADGDISABLED;
- KRSCtrlShiftStrGadSInfo.BufferPos = ExpandCtrl(KRSCtrlShiftStrGadSIBuff, Key->CtrlShift, Key->CtrlShiftLen);
- }
- else {
- KRSCtrlShiftStrGadget.Flags |= GADGDISABLED;
- KRSCtrlShiftStrGadSIBuff[0] = '\x00';
- KRSCtrlShiftStrGadSInfo.BufferPos = 0;
- }
- if ((Key->Type & (KCF_CONTROL|KCF_ALT)) == (KCF_CONTROL|KCF_ALT)) {
- KRSCtrlAltStrGadget.Flags &= ~GADGDISABLED;
- KRSCtrlAltStrGadSInfo.BufferPos = ExpandCtrl(KRSCtrlAltStrGadSIBuff, Key->CtrlAlt, Key->CtrlAltLen);
- }
- else {
- KRSCtrlAltStrGadget.Flags |= GADGDISABLED;
- KRSCtrlAltStrGadSIBuff[0] = '\x00';
- KRSCtrlAltStrGadSInfo.BufferPos = 0;
- }
- if ((Key->Type & KC_VANILLA) == KC_VANILLA) {
- KRSVanillaStrGadget.Flags &= ~GADGDISABLED;
- KRSVanillaStrGadSInfo.BufferPos = ExpandCtrl(KRSVanillaStrGadSIBuff, Key->Vanilla, Key->VanillaLen);
- }
- else {
- KRSVanillaStrGadget.Flags |= GADGDISABLED;
- KRSVanillaStrGadSIBuff[0] = '\x00';
- KRSVanillaStrGadSInfo.BufferPos = 0;
- }
- break;
- case KCF_DEAD:
- KRNOPGadget.Flags &= ~SELECTED;
- KRNoQualGadget.Flags &= ~SELECTED;
- KRStringGadget.Flags &= ~SELECTED;
- KRDeadGadget.Flags |= SELECTED;
- KRRepeatableGadget.NextGadget = KRDeadGadgetList;
- KRRequester.ReqText = KRDeadITextList;
-
- KRDAloneModGadget.Flags &= ~(SELECTED|GADGDISABLED);
- KRDAloneDeadGadget.Flags &= ~(SELECTED|GADGDISABLED);
- switch (Key->AloneOpt) {
- case KC_NOQUAL:
- KRDAloneDeadGadget.NextGadget = &KRDAloneNormalStrGadget;
- KRDAloneNormalStrGadSInfo.BufferPos = ExpandCtrl(KRDAloneNormalStrGadSIBuff, Key->Alone, 1);
- break;
- case DPF_MOD:
- KRDAloneModGadget.Flags |= SELECTED;
- KRDAloneDeadGadget.NextGadget = &KRDAloneMod0StrGadget;
- KRDAloneMod0StrGadSInfo.BufferPos = ExpandCtrl(KRDAloneMod0StrGadSIBuff, &Key->Alone[0], 1);
- KRDAloneMod0StrGadSInfo.DispPos = KRDAloneMod0StrGadSInfo.BufferPos - 1;
- KRDAloneMod1StrGadSInfo.BufferPos = ExpandCtrl(KRDAloneMod1StrGadSIBuff, &Key->Alone[1], 1);
- KRDAloneMod1StrGadSInfo.DispPos = KRDAloneMod1StrGadSInfo.BufferPos - 1;
- KRDAloneMod2StrGadSInfo.BufferPos = ExpandCtrl(KRDAloneMod2StrGadSIBuff, &Key->Alone[2], 1);
- KRDAloneMod2StrGadSInfo.DispPos = KRDAloneMod2StrGadSInfo.BufferPos - 1;
- KRDAloneMod3StrGadSInfo.BufferPos = ExpandCtrl(KRDAloneMod3StrGadSIBuff, &Key->Alone[3], 1);
- KRDAloneMod3StrGadSInfo.DispPos = KRDAloneMod3StrGadSInfo.BufferPos - 1;
- KRDAloneMod4StrGadSInfo.BufferPos = ExpandCtrl(KRDAloneMod4StrGadSIBuff, &Key->Alone[4], 1);
- KRDAloneMod4StrGadSInfo.DispPos = KRDAloneMod4StrGadSInfo.BufferPos - 1;
- KRDAloneMod5StrGadSInfo.BufferPos = ExpandCtrl(KRDAloneMod5StrGadSIBuff, &Key->Alone[5], 1);
- KRDAloneMod5StrGadSInfo.DispPos = KRDAloneMod5StrGadSInfo.BufferPos - 1;
- break;
- case DPF_DEAD:
- KRDAloneDeadGadget.Flags |= SELECTED;
- KRDAloneDeadGadget.NextGadget = &KRDAloneAcc1Gadget;
- KRDAloneAcc1Gadget.Flags &= ~SELECTED;
- KRDAloneAcc2Gadget.Flags &= ~SELECTED;
- KRDAloneAcc3Gadget.Flags &= ~SELECTED;
- KRDAloneAcc4Gadget.Flags &= ~SELECTED;
- KRDAloneAcc5Gadget.Flags &= ~SELECTED;
- switch (Key->Alone[0]) {
- case 01:
- KRDAloneAcc1Gadget.Flags |= SELECTED;
- break;
- case 02:
- KRDAloneAcc2Gadget.Flags |= SELECTED;
- break;
- case 03:
- KRDAloneAcc3Gadget.Flags |= SELECTED;
- break;
- case 04:
- KRDAloneAcc4Gadget.Flags |= SELECTED;
- break;
- case 05:
- KRDAloneAcc5Gadget.Flags |= SELECTED;
- } /* switch */
- } /* switch */
- KRDShiftModGadget.Flags &= ~(SELECTED|GADGDISABLED);
- KRDShiftDeadGadget.Flags &= ~(SELECTED|GADGDISABLED);
- if (Key->Type & KCF_SHIFT)
- switch (Key->ShiftOpt) {
- case KC_NOQUAL:
- KRDShiftDeadGadget.NextGadget = &KRDShiftNormalStrGadget;
- KRDShiftNormalStrGadSInfo.BufferPos = ExpandCtrl(KRDShiftNormalStrGadSIBuff, Key->Shift, 1);
- break;
- case DPF_MOD:
- KRDShiftModGadget.Flags |= SELECTED;
- KRDShiftDeadGadget.NextGadget = &KRDShiftMod0StrGadget;
- KRDShiftMod0StrGadSInfo.BufferPos = ExpandCtrl(KRDShiftMod0StrGadSIBuff, &Key->Shift[0], 1);
- KRDShiftMod0StrGadSInfo.DispPos = KRDShiftMod0StrGadSInfo.BufferPos - 1;
- KRDShiftMod1StrGadSInfo.BufferPos = ExpandCtrl(KRDShiftMod1StrGadSIBuff, &Key->Shift[1], 1);
- KRDShiftMod1StrGadSInfo.DispPos = KRDShiftMod1StrGadSInfo.BufferPos - 1;
- KRDShiftMod2StrGadSInfo.BufferPos = ExpandCtrl(KRDShiftMod2StrGadSIBuff, &Key->Shift[2], 1);
- KRDShiftMod2StrGadSInfo.DispPos = KRDShiftMod2StrGadSInfo.BufferPos - 1;
- KRDShiftMod3StrGadSInfo.BufferPos = ExpandCtrl(KRDShiftMod3StrGadSIBuff, &Key->Shift[3], 1);
- KRDShiftMod3StrGadSInfo.DispPos = KRDShiftMod3StrGadSInfo.BufferPos - 1;
- KRDShiftMod4StrGadSInfo.BufferPos = ExpandCtrl(KRDShiftMod4StrGadSIBuff, &Key->Shift[4], 1);
- KRDShiftMod4StrGadSInfo.DispPos = KRDShiftMod4StrGadSInfo.BufferPos - 1;
- KRDShiftMod5StrGadSInfo.BufferPos = ExpandCtrl(KRDShiftMod5StrGadSIBuff, &Key->Shift[5], 1);
- KRDShiftMod5StrGadSInfo.DispPos = KRDShiftMod5StrGadSInfo.BufferPos - 1;
- break;
- case DPF_DEAD:
- KRDShiftDeadGadget.Flags |= SELECTED;
- KRDShiftDeadGadget.NextGadget = &KRDShiftAcc1Gadget;
- KRDShiftAcc1Gadget.Flags &= ~SELECTED;
- KRDShiftAcc2Gadget.Flags &= ~SELECTED;
- KRDShiftAcc3Gadget.Flags &= ~SELECTED;
- KRDShiftAcc4Gadget.Flags &= ~SELECTED;
- KRDShiftAcc5Gadget.Flags &= ~SELECTED;
- switch (Key->Shift[0]) {
- case 01:
- KRDShiftAcc1Gadget.Flags |= SELECTED;
- break;
- case 02:
- KRDShiftAcc2Gadget.Flags |= SELECTED;
- break;
- case 03:
- KRDShiftAcc3Gadget.Flags |= SELECTED;
- break;
- case 04:
- KRDShiftAcc4Gadget.Flags |= SELECTED;
- break;
- case 05:
- KRDShiftAcc5Gadget.Flags |= SELECTED;
- } /* switch */
- } /* switch */
- else {
- KRDShiftModGadget.Flags |= GADGDISABLED;
- KRDShiftDeadGadget.Flags |= GADGDISABLED;
- KRDShiftDeadGadget.NextGadget = &KRDAltModGadget;
- }
- KRDAltModGadget.Flags &= ~(SELECTED|GADGDISABLED);
- KRDAltDeadGadget.Flags &= ~(SELECTED|GADGDISABLED);
- if (Key->Type & KCF_ALT)
- switch (Key->AltOpt) {
- case KC_NOQUAL:
- KRDAltDeadGadget.NextGadget = &KRDAltNormalStrGadget;
- KRDAltNormalStrGadSInfo.BufferPos = ExpandCtrl(KRDAltNormalStrGadSIBuff, Key->Alt, 1);
- break;
- case DPF_MOD:
- KRDAltModGadget.Flags |= SELECTED;
- KRDAltDeadGadget.NextGadget = &KRDAltMod0StrGadget;
- KRDAltMod0StrGadSInfo.BufferPos = ExpandCtrl(KRDAltMod0StrGadSIBuff, &Key->Alt[0], 1);
- KRDAltMod0StrGadSInfo.DispPos = KRDAltMod0StrGadSInfo.BufferPos - 1;
- KRDAltMod1StrGadSInfo.BufferPos = ExpandCtrl(KRDAltMod1StrGadSIBuff, &Key->Alt[1], 1);
- KRDAltMod1StrGadSInfo.DispPos = KRDAltMod1StrGadSInfo.BufferPos - 1;
- KRDAltMod2StrGadSInfo.BufferPos = ExpandCtrl(KRDAltMod2StrGadSIBuff, &Key->Alt[2], 1);
- KRDAltMod2StrGadSInfo.DispPos = KRDAltMod2StrGadSInfo.BufferPos - 1;
- KRDAltMod3StrGadSInfo.BufferPos = ExpandCtrl(KRDAltMod3StrGadSIBuff, &Key->Alt[3], 1);
- KRDAltMod3StrGadSInfo.DispPos = KRDAltMod3StrGadSInfo.BufferPos - 1;
- KRDAltMod4StrGadSInfo.BufferPos = ExpandCtrl(KRDAltMod4StrGadSIBuff, &Key->Alt[4], 1);
- KRDAltMod4StrGadSInfo.DispPos = KRDAltMod4StrGadSInfo.BufferPos - 1;
- KRDAltMod5StrGadSInfo.BufferPos = ExpandCtrl(KRDAltMod5StrGadSIBuff, &Key->Alt[5], 1);
- KRDAltMod5StrGadSInfo.DispPos = KRDAltMod5StrGadSInfo.BufferPos - 1;
- break;
- case DPF_DEAD:
- KRDAltDeadGadget.Flags |= SELECTED;
- KRDAltDeadGadget.NextGadget = &KRDAltAcc1Gadget;
- KRDAltAcc1Gadget.Flags &= ~SELECTED;
- KRDAltAcc2Gadget.Flags &= ~SELECTED;
- KRDAltAcc3Gadget.Flags &= ~SELECTED;
- KRDAltAcc4Gadget.Flags &= ~SELECTED;
- KRDAltAcc5Gadget.Flags &= ~SELECTED;
- switch (Key->Alt[0]) {
- case 01:
- KRDAltAcc1Gadget.Flags |= SELECTED;
- break;
- case 02:
- KRDAltAcc2Gadget.Flags |= SELECTED;
- break;
- case 03:
- KRDAltAcc3Gadget.Flags |= SELECTED;
- break;
- case 04:
- KRDAltAcc4Gadget.Flags |= SELECTED;
- break;
- case 05:
- KRDAltAcc5Gadget.Flags |= SELECTED;
- } /* switch */
- } /* switch */
- else {
- KRDAltModGadget.Flags |= GADGDISABLED;
- KRDAltDeadGadget.Flags |= GADGDISABLED;
- KRDAltDeadGadget.NextGadget = &KRDShiftAltModGadget;
- }
- KRDShiftAltModGadget.Flags &= ~(SELECTED|GADGDISABLED);
- KRDShiftAltDeadGadget.Flags &= ~(SELECTED|GADGDISABLED);
- if ((Key->Type & (KCF_SHIFT|KCF_ALT)) == (KCF_SHIFT|KCF_ALT))
- switch (Key->ShiftAltOpt) {
- case KC_NOQUAL:
- KRDShiftAltDeadGadget.NextGadget = &KRDShiftAltNormalStrGadget;
- KRDShiftAltNormalStrGadSInfo.BufferPos = ExpandCtrl(KRDShiftAltNormalStrGadSIBuff, Key->ShiftAlt, 1);
- break;
- case DPF_MOD:
- KRDShiftAltModGadget.Flags |= SELECTED;
- KRDShiftAltDeadGadget.NextGadget = &KRDShiftAltMod0StrGadget;
- KRDShiftAltMod0StrGadSInfo.BufferPos = ExpandCtrl(KRDShiftAltMod0StrGadSIBuff, &Key->ShiftAlt[0], 1);
- KRDShiftAltMod0StrGadSInfo.DispPos = KRDShiftAltMod0StrGadSInfo.BufferPos - 1;
- KRDShiftAltMod1StrGadSInfo.BufferPos = ExpandCtrl(KRDShiftAltMod1StrGadSIBuff, &Key->ShiftAlt[1], 1);
- KRDShiftAltMod1StrGadSInfo.DispPos = KRDShiftAltMod1StrGadSInfo.BufferPos - 1;
- KRDShiftAltMod2StrGadSInfo.BufferPos = ExpandCtrl(KRDShiftAltMod2StrGadSIBuff, &Key->ShiftAlt[2], 1);
- KRDShiftAltMod2StrGadSInfo.DispPos = KRDShiftAltMod2StrGadSInfo.BufferPos - 1;
- KRDShiftAltMod3StrGadSInfo.BufferPos = ExpandCtrl(KRDShiftAltMod3StrGadSIBuff, &Key->ShiftAlt[3], 1);
- KRDShiftAltMod3StrGadSInfo.DispPos = KRDShiftAltMod3StrGadSInfo.BufferPos - 1;
- KRDShiftAltMod4StrGadSInfo.BufferPos = ExpandCtrl(KRDShiftAltMod4StrGadSIBuff, &Key->ShiftAlt[4], 1);
- KRDShiftAltMod4StrGadSInfo.DispPos = KRDShiftAltMod4StrGadSInfo.BufferPos - 1;
- KRDShiftAltMod5StrGadSInfo.BufferPos = ExpandCtrl(KRDShiftAltMod5StrGadSIBuff, &Key->ShiftAlt[5], 1);
- KRDShiftAltMod5StrGadSInfo.DispPos = KRDShiftAltMod5StrGadSInfo.BufferPos - 1;
- case DPF_DEAD:
- KRDShiftAltDeadGadget.Flags |= SELECTED;
- KRDShiftAltDeadGadget.NextGadget = &KRDShiftAltAcc1Gadget;
- KRDShiftAltAcc1Gadget.Flags &= ~SELECTED;
- KRDShiftAltAcc2Gadget.Flags &= ~SELECTED;
- KRDShiftAltAcc3Gadget.Flags &= ~SELECTED;
- KRDShiftAltAcc4Gadget.Flags &= ~SELECTED;
- KRDShiftAltAcc5Gadget.Flags &= ~SELECTED;
- switch (Key->ShiftAlt[0]) {
- case 01:
- KRDShiftAltAcc1Gadget.Flags |= SELECTED;
- break;
- case 02:
- KRDShiftAltAcc2Gadget.Flags |= SELECTED;
- break;
- case 03:
- KRDShiftAltAcc3Gadget.Flags |= SELECTED;
- break;
- case 04:
- KRDShiftAltAcc4Gadget.Flags |= SELECTED;
- break;
- case 05:
- KRDShiftAltAcc5Gadget.Flags |= SELECTED;
- } /* switch */
- } /* switch */
- else {
- KRDShiftAltModGadget.Flags |= GADGDISABLED;
- KRDShiftAltDeadGadget.Flags |= GADGDISABLED;
- KRDShiftAltDeadGadget.NextGadget = &KRDCtrlModGadget;
- }
- KRDCtrlModGadget.Flags &= ~(SELECTED|GADGDISABLED);
- KRDCtrlDeadGadget.Flags &= ~(SELECTED|GADGDISABLED);
- if (Key->Type & KCF_CONTROL)
- switch (Key->CtrlOpt) {
- case KC_NOQUAL:
- KRDCtrlDeadGadget.NextGadget = &KRDCtrlNormalStrGadget;
- KRDCtrlNormalStrGadSInfo.BufferPos = ExpandCtrl(KRDCtrlNormalStrGadSIBuff, Key->Ctrl, 1);
- break;
- case DPF_MOD:
- KRDCtrlModGadget.Flags |= SELECTED;
- KRDCtrlDeadGadget.NextGadget = &KRDCtrlMod0StrGadget;
- KRDCtrlMod0StrGadSInfo.BufferPos = ExpandCtrl(KRDCtrlMod0StrGadSIBuff, &Key->Ctrl[0], 1);
- KRDCtrlMod0StrGadSInfo.DispPos = KRDCtrlMod0StrGadSInfo.BufferPos - 1;
- KRDCtrlMod1StrGadSInfo.BufferPos = ExpandCtrl(KRDCtrlMod1StrGadSIBuff, &Key->Ctrl[1], 1);
- KRDCtrlMod1StrGadSInfo.DispPos = KRDCtrlMod1StrGadSInfo.BufferPos - 1;
- KRDCtrlMod2StrGadSInfo.BufferPos = ExpandCtrl(KRDCtrlMod2StrGadSIBuff, &Key->Ctrl[2], 1);
- KRDCtrlMod2StrGadSInfo.DispPos = KRDCtrlMod2StrGadSInfo.BufferPos - 1;
- KRDCtrlMod3StrGadSInfo.BufferPos = ExpandCtrl(KRDCtrlMod3StrGadSIBuff, &Key->Ctrl[3], 1);
- KRDCtrlMod3StrGadSInfo.DispPos = KRDCtrlMod3StrGadSInfo.BufferPos - 1;
- KRDCtrlMod4StrGadSInfo.BufferPos = ExpandCtrl(KRDCtrlMod4StrGadSIBuff, &Key->Ctrl[4], 1);
- KRDCtrlMod4StrGadSInfo.DispPos = KRDCtrlMod4StrGadSInfo.BufferPos - 1;
- KRDCtrlMod5StrGadSInfo.BufferPos = ExpandCtrl(KRDCtrlMod5StrGadSIBuff, &Key->Ctrl[5], 1);
- KRDCtrlMod5StrGadSInfo.DispPos = KRDCtrlMod5StrGadSInfo.BufferPos - 1;
- break;
- case DPF_DEAD:
- KRDCtrlDeadGadget.Flags |= SELECTED;
- KRDCtrlDeadGadget.NextGadget = &KRDCtrlAcc1Gadget;
- KRDCtrlAcc1Gadget.Flags &= ~SELECTED;
- KRDCtrlAcc2Gadget.Flags &= ~SELECTED;
- KRDCtrlAcc3Gadget.Flags &= ~SELECTED;
- KRDCtrlAcc4Gadget.Flags &= ~SELECTED;
- KRDCtrlAcc5Gadget.Flags &= ~SELECTED;
- switch (Key->Ctrl[0]) {
- case 01:
- KRDCtrlAcc1Gadget.Flags |= SELECTED;
- break;
- case 02:
- KRDCtrlAcc2Gadget.Flags |= SELECTED;
- break;
- case 03:
- KRDCtrlAcc3Gadget.Flags |= SELECTED;
- break;
- case 04:
- KRDCtrlAcc4Gadget.Flags |= SELECTED;
- break;
- case 05:
- KRDCtrlAcc5Gadget.Flags |= SELECTED;
- } /* switch */
- } /* switch */
- else {
- KRDCtrlModGadget.Flags |= GADGDISABLED;
- KRDCtrlDeadGadget.Flags |= GADGDISABLED;
- KRDCtrlDeadGadget.NextGadget = &KRDCtrlShiftModGadget;
- }
- KRDCtrlShiftModGadget.Flags &= ~(SELECTED|GADGDISABLED);
- KRDCtrlShiftDeadGadget.Flags &= ~(SELECTED|GADGDISABLED);
- if ((Key->Type & (KCF_CONTROL|KCF_SHIFT)) == (KCF_CONTROL|KCF_SHIFT))
- switch (Key->CtrlShiftOpt) {
- case KC_NOQUAL:
- KRDCtrlShiftDeadGadget.NextGadget = &KRDCtrlShiftNormalStrGadget;
- KRDCtrlShiftNormalStrGadSInfo.BufferPos = ExpandCtrl(KRDCtrlShiftNormalStrGadSIBuff, Key->CtrlShift, 1);
- break;
- case DPF_MOD:
- KRDCtrlShiftModGadget.Flags |= SELECTED;
- KRDCtrlShiftDeadGadget.NextGadget = &KRDCtrlShiftMod0StrGadget;
- KRDCtrlShiftMod0StrGadSInfo.BufferPos = ExpandCtrl(KRDCtrlShiftMod0StrGadSIBuff, &Key->CtrlShift[0], 1);
- KRDCtrlShiftMod0StrGadSInfo.DispPos = KRDCtrlShiftMod0StrGadSInfo.BufferPos - 1;
- KRDCtrlShiftMod1StrGadSInfo.BufferPos = ExpandCtrl(KRDCtrlShiftMod1StrGadSIBuff, &Key->CtrlShift[1], 1);
- KRDCtrlShiftMod1StrGadSInfo.DispPos = KRDCtrlShiftMod1StrGadSInfo.BufferPos - 1;
- KRDCtrlShiftMod2StrGadSInfo.BufferPos = ExpandCtrl(KRDCtrlShiftMod2StrGadSIBuff, &Key->CtrlShift[2], 1);
- KRDCtrlShiftMod2StrGadSInfo.DispPos = KRDCtrlShiftMod2StrGadSInfo.BufferPos - 1;
- KRDCtrlShiftMod3StrGadSInfo.BufferPos = ExpandCtrl(KRDCtrlShiftMod3StrGadSIBuff, &Key->CtrlShift[3], 1);
- KRDCtrlShiftMod3StrGadSInfo.DispPos = KRDCtrlShiftMod3StrGadSInfo.BufferPos - 1;
- KRDCtrlShiftMod4StrGadSInfo.BufferPos = ExpandCtrl(KRDCtrlShiftMod4StrGadSIBuff, &Key->CtrlShift[4], 1);
- KRDCtrlShiftMod4StrGadSInfo.DispPos = KRDCtrlShiftMod4StrGadSInfo.BufferPos - 1;
- KRDCtrlShiftMod5StrGadSInfo.BufferPos = ExpandCtrl(KRDCtrlShiftMod5StrGadSIBuff, &Key->CtrlShift[5], 1);
- KRDCtrlShiftMod5StrGadSInfo.DispPos = KRDCtrlShiftMod5StrGadSInfo.BufferPos - 1;
- break;
- case DPF_DEAD:
- KRDCtrlShiftDeadGadget.Flags |= SELECTED;
- KRDCtrlShiftDeadGadget.NextGadget = &KRDCtrlShiftAcc1Gadget;
- KRDCtrlShiftAcc1Gadget.Flags &= ~SELECTED;
- KRDCtrlShiftAcc2Gadget.Flags &= ~SELECTED;
- KRDCtrlShiftAcc3Gadget.Flags &= ~SELECTED;
- KRDCtrlShiftAcc4Gadget.Flags &= ~SELECTED;
- KRDCtrlShiftAcc5Gadget.Flags &= ~SELECTED;
- switch (Key->CtrlShift[0]) {
- case 01:
- KRDCtrlShiftAcc1Gadget.Flags |= SELECTED;
- break;
- case 02:
- KRDCtrlShiftAcc2Gadget.Flags |= SELECTED;
- break;
- case 03:
- KRDCtrlShiftAcc3Gadget.Flags |= SELECTED;
- break;
- case 04:
- KRDCtrlShiftAcc4Gadget.Flags |= SELECTED;
- break;
- case 05:
- KRDCtrlShiftAcc5Gadget.Flags |= SELECTED;
- } /* switch */
- } /* switch */
- else {
- KRDCtrlShiftModGadget.Flags |= GADGDISABLED;
- KRDCtrlShiftDeadGadget.Flags |= GADGDISABLED;
- KRDCtrlShiftDeadGadget.NextGadget = &KRDCtrlAltModGadget;
- }
- KRDCtrlAltModGadget.Flags &= ~(SELECTED|GADGDISABLED);
- KRDCtrlAltDeadGadget.Flags &= ~(SELECTED|GADGDISABLED);
- if ((Key->Type & (KCF_CONTROL|KCF_ALT)) == (KCF_CONTROL|KCF_ALT))
- switch (Key->CtrlAltOpt) {
- case KC_NOQUAL:
- KRDCtrlAltDeadGadget.NextGadget = &KRDCtrlAltNormalStrGadget;
- KRDCtrlAltNormalStrGadSInfo.BufferPos = ExpandCtrl(KRDCtrlAltNormalStrGadSIBuff, Key->CtrlAlt, 1);
- break;
- case DPF_MOD:
- KRDCtrlAltModGadget.Flags |= SELECTED;
- KRDCtrlAltDeadGadget.NextGadget = &KRDCtrlAltMod0StrGadget;
- KRDCtrlAltMod0StrGadSInfo.BufferPos = ExpandCtrl(KRDCtrlAltMod0StrGadSIBuff, &Key->CtrlAlt[0], 1);
- KRDCtrlAltMod0StrGadSInfo.DispPos = KRDCtrlAltMod0StrGadSInfo.BufferPos - 1;
- KRDCtrlAltMod1StrGadSInfo.BufferPos = ExpandCtrl(KRDCtrlAltMod1StrGadSIBuff, &Key->CtrlAlt[1], 1);
- KRDCtrlAltMod1StrGadSInfo.DispPos = KRDCtrlAltMod1StrGadSInfo.BufferPos - 1;
- KRDCtrlAltMod2StrGadSInfo.BufferPos = ExpandCtrl(KRDCtrlAltMod2StrGadSIBuff, &Key->CtrlAlt[2], 1);
- KRDCtrlAltMod2StrGadSInfo.DispPos = KRDCtrlAltMod2StrGadSInfo.BufferPos - 1;
- KRDCtrlAltMod3StrGadSInfo.BufferPos = ExpandCtrl(KRDCtrlAltMod3StrGadSIBuff, &Key->CtrlAlt[3], 1);
- KRDCtrlAltMod3StrGadSInfo.DispPos = KRDCtrlAltMod3StrGadSInfo.BufferPos - 1;
- KRDCtrlAltMod4StrGadSInfo.BufferPos = ExpandCtrl(KRDCtrlAltMod4StrGadSIBuff, &Key->CtrlAlt[4], 1);
- KRDCtrlAltMod4StrGadSInfo.DispPos = KRDCtrlAltMod4StrGadSInfo.BufferPos - 1;
- KRDCtrlAltMod5StrGadSInfo.BufferPos = ExpandCtrl(KRDCtrlAltMod5StrGadSIBuff, &Key->CtrlAlt[5], 1);
- KRDCtrlAltMod5StrGadSInfo.DispPos = KRDCtrlAltMod5StrGadSInfo.BufferPos - 1;
- break;
- case DPF_DEAD:
- KRDCtrlAltDeadGadget.Flags |= SELECTED;
- KRDCtrlAltDeadGadget.NextGadget = &KRDCtrlAltAcc1Gadget;
- KRDCtrlAltAcc1Gadget.Flags &= ~SELECTED;
- KRDCtrlAltAcc2Gadget.Flags &= ~SELECTED;
- KRDCtrlAltAcc3Gadget.Flags &= ~SELECTED;
- KRDCtrlAltAcc4Gadget.Flags &= ~SELECTED;
- KRDCtrlAltAcc5Gadget.Flags &= ~SELECTED;
- switch (Key->CtrlAlt[0]) {
- case 01:
- KRDCtrlAltAcc1Gadget.Flags |= SELECTED;
- break;
- case 02:
- KRDCtrlAltAcc2Gadget.Flags |= SELECTED;
- break;
- case 03:
- KRDCtrlAltAcc3Gadget.Flags |= SELECTED;
- break;
- case 04:
- KRDCtrlAltAcc4Gadget.Flags |= SELECTED;
- break;
- case 05:
- KRDCtrlAltAcc5Gadget.Flags |= SELECTED;
- } /* switch */
- } /* switch */
- else {
- KRDCtrlAltModGadget.Flags |= GADGDISABLED;
- KRDCtrlAltDeadGadget.Flags |= GADGDISABLED;
- KRDCtrlAltDeadGadget.NextGadget = &KRDVanillaModGadget;
- }
- KRDVanillaModGadget.Flags &= ~(SELECTED|GADGDISABLED);
- KRDVanillaDeadGadget.Flags &= ~(SELECTED|GADGDISABLED);
- if ((Key->Type & KC_VANILLA) == KC_VANILLA)
- switch (Key->VanillaOpt) {
- case KC_NOQUAL:
- KRDVanillaDeadGadget.NextGadget = &KRDVanillaNormalStrGadget;
- KRDVanillaNormalStrGadSInfo.BufferPos = ExpandCtrl(KRDVanillaNormalStrGadSIBuff, Key->Vanilla, 1);
- break;
- case DPF_MOD:
- KRDVanillaModGadget.Flags |= SELECTED;
- KRDVanillaDeadGadget.NextGadget = &KRDVanillaMod0StrGadget;
- KRDVanillaMod0StrGadSInfo.BufferPos = ExpandCtrl(KRDVanillaMod0StrGadSIBuff, &Key->Vanilla[0], 1);
- KRDVanillaMod0StrGadSInfo.DispPos = KRDVanillaMod0StrGadSInfo.BufferPos - 1;
- KRDVanillaMod1StrGadSInfo.BufferPos = ExpandCtrl(KRDVanillaMod1StrGadSIBuff, &Key->Vanilla[1], 1);
- KRDVanillaMod1StrGadSInfo.DispPos = KRDVanillaMod1StrGadSInfo.BufferPos - 1;
- KRDVanillaMod2StrGadSInfo.BufferPos = ExpandCtrl(KRDVanillaMod2StrGadSIBuff, &Key->Vanilla[2], 1);
- KRDVanillaMod2StrGadSInfo.DispPos = KRDVanillaMod2StrGadSInfo.BufferPos - 1;
- KRDVanillaMod3StrGadSInfo.BufferPos = ExpandCtrl(KRDVanillaMod3StrGadSIBuff, &Key->Vanilla[3], 1);
- KRDVanillaMod3StrGadSInfo.DispPos = KRDVanillaMod3StrGadSInfo.BufferPos - 1;
- KRDVanillaMod4StrGadSInfo.BufferPos = ExpandCtrl(KRDVanillaMod4StrGadSIBuff, &Key->Vanilla[4], 1);
- KRDVanillaMod4StrGadSInfo.DispPos = KRDVanillaMod4StrGadSInfo.BufferPos - 1;
- KRDVanillaMod5StrGadSInfo.BufferPos = ExpandCtrl(KRDVanillaMod5StrGadSIBuff, &Key->Vanilla[5], 1);
- KRDVanillaMod5StrGadSInfo.DispPos = KRDVanillaMod5StrGadSInfo.BufferPos - 1;
- break;
- case DPF_DEAD:
- KRDVanillaDeadGadget.Flags |= SELECTED;
- KRDVanillaDeadGadget.NextGadget = &KRDVanillaAcc1Gadget;
- KRDVanillaAcc1Gadget.Flags &= ~SELECTED;
- KRDVanillaAcc2Gadget.Flags &= ~SELECTED;
- KRDVanillaAcc3Gadget.Flags &= ~SELECTED;
- KRDVanillaAcc4Gadget.Flags &= ~SELECTED;
- KRDVanillaAcc5Gadget.Flags &= ~SELECTED;
- switch (Key->Vanilla[0]) {
- case 01:
- KRDVanillaAcc1Gadget.Flags |= SELECTED;
- break;
- case 02:
- KRDVanillaAcc2Gadget.Flags |= SELECTED;
- break;
- case 03:
- KRDVanillaAcc3Gadget.Flags |= SELECTED;
- break;
- case 04:
- KRDVanillaAcc4Gadget.Flags |= SELECTED;
- break;
- case 05:
- KRDVanillaAcc5Gadget.Flags |= SELECTED;
- } /* switch */
- } /* switch */
- else {
- KRDVanillaModGadget.Flags |= GADGDISABLED;
- KRDVanillaDeadGadget.Flags |= GADGDISABLED;
- KRDVanillaDeadGadget.NextGadget = &KRUseGadget;
- }
- break;
- case KCF_NOP:
- KRNOPGadget.Flags |= SELECTED;
- KRNoQualGadget.Flags &= ~SELECTED;
- KRStringGadget.Flags &= ~SELECTED;
- KRDeadGadget.Flags &= ~SELECTED;
- KRRepeatableGadget.NextGadget = KRNOPGadgetList;
- KRRequester.ReqText = NULL;
- break;
- } /* switch */
- KRShiftGadget.Flags &= ~(SELECTED|GADGDISABLED);
- KRAltGadget.Flags &= ~(SELECTED|GADGDISABLED);
- KRCtrlGadget.Flags &= ~(SELECTED|GADGDISABLED);
- KRCapsableGadget.Flags &= ~(SELECTED|GADGDISABLED);
- KRRepeatableGadget.Flags &= ~(SELECTED|GADGDISABLED);
- if (!(Key->Type & KCF_NOP)) {
- if (Key->Type & KCF_SHIFT)
- KRShiftGadget.Flags |= SELECTED;
- if (Key->Type & KCF_ALT)
- KRAltGadget.Flags |= SELECTED;
- if (Key->Type & KCF_CONTROL)
- KRCtrlGadget.Flags |= SELECTED;
- if (Key->Capsable)
- KRCapsableGadget.Flags |= SELECTED;
- if (Key->Repeatable)
- KRRepeatableGadget.Flags |= SELECTED;
- }
- else {
- KRShiftGadget.Flags |= GADGDISABLED;
- KRAltGadget.Flags |= GADGDISABLED;
- KRCtrlGadget.Flags |= GADGDISABLED;
- KRCapsableGadget.Flags |= GADGDISABLED;
- KRRepeatableGadget.Flags |= GADGDISABLED;
- }
- }
-
- /*
- * Update Key
- */
- void UpdateKey(Key)
- struct KeyNode *Key;
- {
- switch(Key->Type & (KCF_STRING|KCF_DEAD|KCF_NOP)) {
- case KC_NOQUAL:
- Key->AloneLen = CollapseCtrl(Key->Alone, KRNAloneStrGadSIBuff, 1);
- if (Key->Type & KCF_SHIFT)
- Key->ShiftLen = CollapseCtrl(Key->Shift, KRNOpt1StrGadSIBuff, 1);
- else if (Key->Type & KCF_ALT)
- Key->AltLen = CollapseCtrl(Key->Alt, KRNOpt1StrGadSIBuff, 1);
- else if (Key->Type & KCF_CONTROL)
- Key->CtrlLen = CollapseCtrl(Key->Ctrl, KRNOpt1StrGadSIBuff, 1);
- if ((Key->Type & KCF_ALT) && (Key->Type & KCF_SHIFT))
- Key->AltLen = CollapseCtrl(Key->Alt, KRNOpt2StrGadSIBuff, 1);
- else if ((Key->Type & KCF_CONTROL) && (Key->Type & (KCF_SHIFT|KCF_ALT)))
- Key->CtrlLen = CollapseCtrl(Key->Ctrl, KRNOpt2StrGadSIBuff, 1);
- if ((Key->Type & (KCF_SHIFT|KCF_ALT)) == (KCF_SHIFT|KCF_ALT))
- Key->ShiftAltLen = CollapseCtrl(Key->ShiftAlt, KRNOpt3StrGadSIBuff, 1);
- else if ((Key->Type & (KCF_CONTROL|KCF_SHIFT)) == (KCF_CONTROL|KCF_SHIFT))
- Key->CtrlShiftLen = CollapseCtrl(Key->CtrlShift, KRNOpt3StrGadSIBuff, 1);
- else if ((Key->Type & (KCF_CONTROL|KCF_ALT)) == (KCF_CONTROL|KCF_ALT))
- Key->CtrlAltLen = CollapseCtrl(Key->CtrlAlt, KRNOpt3StrGadSIBuff, 1);
- break;
- case KCF_STRING:
- Key->AloneLen = CollapseCtrl(Key->Alone, KRSAloneStrGadSIBuff, 32);
- Key->ShiftLen = CollapseCtrl(Key->Shift, KRSShiftStrGadSIBuff, 32);
- Key->AltLen = CollapseCtrl(Key->Alt, KRSAltStrGadSIBuff, 32);
- Key->ShiftAltLen = CollapseCtrl(Key->ShiftAlt, KRSShiftAltStrGadSIBuff, 32);
- Key->CtrlLen = CollapseCtrl(Key->Ctrl, KRSCtrlStrGadSIBuff, 32);
- Key->CtrlShiftLen = CollapseCtrl(Key->CtrlShift, KRSCtrlShiftStrGadSIBuff, 32);
- Key->CtrlAltLen = CollapseCtrl(Key->CtrlAlt, KRSCtrlAltStrGadSIBuff, 32);
- Key->VanillaLen = CollapseCtrl(Key->Vanilla, KRSVanillaStrGadSIBuff, 32);
- break;
- case KCF_DEAD:
- switch (Key->AloneOpt) {
- case KC_NOQUAL:
- Key->AloneLen = CollapseCtrl(Key->Alone, KRDAloneNormalStrGadSIBuff, 1);
- break;
- case DPF_MOD:
- Key->AloneLen = 6;
- CollapseCtrl(&Key->Alone[0], KRDAloneMod0StrGadSIBuff, 1);
- CollapseCtrl(&Key->Alone[1], KRDAloneMod1StrGadSIBuff, 1);
- CollapseCtrl(&Key->Alone[2], KRDAloneMod2StrGadSIBuff, 1);
- CollapseCtrl(&Key->Alone[3], KRDAloneMod3StrGadSIBuff, 1);
- CollapseCtrl(&Key->Alone[4], KRDAloneMod4StrGadSIBuff, 1);
- CollapseCtrl(&Key->Alone[5], KRDAloneMod5StrGadSIBuff, 1);
- break;
- case DPF_DEAD:
- Key->AloneLen = 1;
- if (KRDAloneAcc1Gadget.Flags & SELECTED)
- Key->Alone[0] = 1;
- else if (KRDAloneAcc2Gadget.Flags & SELECTED)
- Key->Alone[0] = 2;
- else if (KRDAloneAcc3Gadget.Flags & SELECTED)
- Key->Alone[0] = 3;
- else if (KRDAloneAcc4Gadget.Flags & SELECTED)
- Key->Alone[0] = 4;
- else
- Key->Alone[0] = 5;
- Key->Alone[1] = '\x00';
- } /* switch */
- switch (Key->ShiftOpt) {
- case KC_NOQUAL:
- Key->ShiftLen = CollapseCtrl(Key->Shift, KRDShiftNormalStrGadSIBuff, 1);
- break;
- case DPF_MOD:
- Key->ShiftLen = 6;
- CollapseCtrl(&Key->Shift[0], KRDShiftMod0StrGadSIBuff, 1);
- CollapseCtrl(&Key->Shift[1], KRDShiftMod1StrGadSIBuff, 1);
- CollapseCtrl(&Key->Shift[2], KRDShiftMod2StrGadSIBuff, 1);
- CollapseCtrl(&Key->Shift[3], KRDShiftMod3StrGadSIBuff, 1);
- CollapseCtrl(&Key->Shift[4], KRDShiftMod4StrGadSIBuff, 1);
- CollapseCtrl(&Key->Shift[5], KRDShiftMod5StrGadSIBuff, 1);
- break;
- case DPF_DEAD:
- Key->ShiftLen = 1;
- if (KRDShiftAcc1Gadget.Flags & SELECTED)
- Key->Shift[0] = 1;
- else if (KRDShiftAcc2Gadget.Flags & SELECTED)
- Key->Shift[0] = 2;
- else if (KRDShiftAcc3Gadget.Flags & SELECTED)
- Key->Shift[0] = 3;
- else if (KRDShiftAcc4Gadget.Flags & SELECTED)
- Key->Shift[0] = 4;
- else
- Key->Shift[0] = 5;
- Key->Shift[1] = '\x00';
- } /* switch */
- switch (Key->AltOpt) {
- case KC_NOQUAL:
- Key->AltLen = CollapseCtrl(Key->Alt, KRDAltNormalStrGadSIBuff, 1);
- break;
- case DPF_MOD:
- Key->AltLen = 6;
- CollapseCtrl(&Key->Alt[0], KRDAltMod0StrGadSIBuff, 1);
- CollapseCtrl(&Key->Alt[1], KRDAltMod1StrGadSIBuff, 1);
- CollapseCtrl(&Key->Alt[2], KRDAltMod2StrGadSIBuff, 1);
- CollapseCtrl(&Key->Alt[3], KRDAltMod3StrGadSIBuff, 1);
- CollapseCtrl(&Key->Alt[4], KRDAltMod4StrGadSIBuff, 1);
- CollapseCtrl(&Key->Alt[5], KRDAltMod5StrGadSIBuff, 1);
- break;
- case DPF_DEAD:
- Key->AltLen = 1;
- if (KRDAltAcc1Gadget.Flags & SELECTED)
- Key->Alt[0] = 1;
- else if (KRDAltAcc2Gadget.Flags & SELECTED)
- Key->Alt[0] = 2;
- else if (KRDAltAcc3Gadget.Flags & SELECTED)
- Key->Alt[0] = 3;
- else if (KRDAltAcc4Gadget.Flags & SELECTED)
- Key->Alt[0] = 4;
- else
- Key->Alt[0] = 5;
- Key->Alt[1] = '\x00';
- } /* switch */
- switch (Key->ShiftAltOpt) {
- case KC_NOQUAL:
- Key->ShiftAltLen = CollapseCtrl(Key->ShiftAlt, KRDShiftAltNormalStrGadSIBuff, 1);
- break;
- case DPF_MOD:
- Key->ShiftAltLen = 6;
- CollapseCtrl(&Key->ShiftAlt[0], KRDShiftAltMod0StrGadSIBuff, 1);
- CollapseCtrl(&Key->ShiftAlt[1], KRDShiftAltMod1StrGadSIBuff, 1);
- CollapseCtrl(&Key->ShiftAlt[2], KRDShiftAltMod2StrGadSIBuff, 1);
- CollapseCtrl(&Key->ShiftAlt[3], KRDShiftAltMod3StrGadSIBuff, 1);
- CollapseCtrl(&Key->ShiftAlt[4], KRDShiftAltMod4StrGadSIBuff, 1);
- CollapseCtrl(&Key->ShiftAlt[5], KRDShiftAltMod5StrGadSIBuff, 1);
- break;
- case DPF_DEAD:
- Key->ShiftAltLen = 1;
- if (KRDShiftAltAcc1Gadget.Flags & SELECTED)
- Key->ShiftAlt[0] = 1;
- else if (KRDShiftAltAcc2Gadget.Flags & SELECTED)
- Key->ShiftAlt[0] = 2;
- else if (KRDShiftAltAcc3Gadget.Flags & SELECTED)
- Key->ShiftAlt[0] = 3;
- else if (KRDShiftAltAcc4Gadget.Flags & SELECTED)
- Key->ShiftAlt[0] = 4;
- else
- Key->ShiftAlt[0] = 5;
- Key->ShiftAlt[1] = '\x00';
- } /* switch */
- switch (Key->CtrlOpt) {
- case KC_NOQUAL:
- Key->CtrlLen = CollapseCtrl(Key->Ctrl, KRDCtrlNormalStrGadSIBuff, 1);
- break;
- case DPF_MOD:
- Key->CtrlLen = 6;
- CollapseCtrl(&Key->Ctrl[0], KRDCtrlMod0StrGadSIBuff, 1);
- CollapseCtrl(&Key->Ctrl[1], KRDCtrlMod1StrGadSIBuff, 1);
- CollapseCtrl(&Key->Ctrl[2], KRDCtrlMod2StrGadSIBuff, 1);
- CollapseCtrl(&Key->Ctrl[3], KRDCtrlMod3StrGadSIBuff, 1);
- CollapseCtrl(&Key->Ctrl[4], KRDCtrlMod4StrGadSIBuff, 1);
- CollapseCtrl(&Key->Ctrl[5], KRDCtrlMod5StrGadSIBuff, 1);
- break;
- case DPF_DEAD:
- Key->CtrlLen = 1;
- if (KRDCtrlAcc1Gadget.Flags & SELECTED)
- Key->Ctrl[0] = 1;
- else if (KRDCtrlAcc2Gadget.Flags & SELECTED)
- Key->Ctrl[0] = 2;
- else if (KRDCtrlAcc3Gadget.Flags & SELECTED)
- Key->Ctrl[0] = 3;
- else if (KRDCtrlAcc4Gadget.Flags & SELECTED)
- Key->Ctrl[0] = 4;
- else
- Key->Ctrl[0] = 5;
- Key->Ctrl[1] = '\x00';
- } /* switch */
- switch (Key->CtrlShiftOpt) {
- case KC_NOQUAL:
- Key->CtrlShiftLen = CollapseCtrl(Key->CtrlShift, KRDCtrlShiftNormalStrGadSIBuff, 1);
- break;
- case DPF_MOD:
- Key->CtrlShiftLen = 6;
- CollapseCtrl(&Key->CtrlShift[0], KRDCtrlShiftMod0StrGadSIBuff, 1);
- CollapseCtrl(&Key->CtrlShift[1], KRDCtrlShiftMod1StrGadSIBuff, 1);
- CollapseCtrl(&Key->CtrlShift[2], KRDCtrlShiftMod2StrGadSIBuff, 1);
- CollapseCtrl(&Key->CtrlShift[3], KRDCtrlShiftMod3StrGadSIBuff, 1);
- CollapseCtrl(&Key->CtrlShift[4], KRDCtrlShiftMod4StrGadSIBuff, 1);
- CollapseCtrl(&Key->CtrlShift[5], KRDCtrlShiftMod5StrGadSIBuff, 1);
- break;
- case DPF_DEAD:
- Key->CtrlShiftLen = 1;
- if (KRDCtrlShiftAcc1Gadget.Flags & SELECTED)
- Key->CtrlShift[0] = 1;
- else if (KRDCtrlShiftAcc2Gadget.Flags & SELECTED)
- Key->CtrlShift[0] = 2;
- else if (KRDCtrlShiftAcc3Gadget.Flags & SELECTED)
- Key->CtrlShift[0] = 3;
- else if (KRDCtrlShiftAcc4Gadget.Flags & SELECTED)
- Key->CtrlShift[0] = 4;
- else
- Key->CtrlShift[0] = 5;
- Key->CtrlShift[1] = '\x00';
- } /* switch */
- switch (Key->CtrlAltOpt) {
- case KC_NOQUAL:
- Key->CtrlAltLen = CollapseCtrl(Key->CtrlAlt, KRDCtrlAltNormalStrGadSIBuff, 1);
- break;
- case DPF_MOD:
- Key->CtrlAltLen = 6;
- CollapseCtrl(&Key->CtrlAlt[0], KRDCtrlAltMod0StrGadSIBuff, 1);
- CollapseCtrl(&Key->CtrlAlt[1], KRDCtrlAltMod1StrGadSIBuff, 1);
- CollapseCtrl(&Key->CtrlAlt[2], KRDCtrlAltMod2StrGadSIBuff, 1);
- CollapseCtrl(&Key->CtrlAlt[3], KRDCtrlAltMod3StrGadSIBuff, 1);
- CollapseCtrl(&Key->CtrlAlt[4], KRDCtrlAltMod4StrGadSIBuff, 1);
- CollapseCtrl(&Key->CtrlAlt[5], KRDCtrlAltMod5StrGadSIBuff, 1);
- break;
- case DPF_DEAD:
- Key->CtrlAltLen = 1;
- if (KRDCtrlAltAcc1Gadget.Flags & SELECTED)
- Key->CtrlAlt[0] = 1;
- else if (KRDCtrlAltAcc2Gadget.Flags & SELECTED)
- Key->CtrlAlt[0] = 2;
- else if (KRDCtrlAltAcc3Gadget.Flags & SELECTED)
- Key->CtrlAlt[0] = 3;
- else if (KRDCtrlAltAcc4Gadget.Flags & SELECTED)
- Key->CtrlAlt[0] = 4;
- else
- Key->CtrlAlt[0] = 5;
- Key->CtrlAlt[1] = '\x00';
- } /* switch */
- switch (Key->VanillaOpt) {
- case KC_NOQUAL:
- Key->VanillaLen = CollapseCtrl(Key->Vanilla, KRDVanillaNormalStrGadSIBuff, 1);
- break;
- case DPF_MOD:
- Key->VanillaLen = 6;
- CollapseCtrl(&Key->Vanilla[0], KRDVanillaMod0StrGadSIBuff, 1);
- CollapseCtrl(&Key->Vanilla[1], KRDVanillaMod1StrGadSIBuff, 1);
- CollapseCtrl(&Key->Vanilla[2], KRDVanillaMod2StrGadSIBuff, 1);
- CollapseCtrl(&Key->Vanilla[3], KRDVanillaMod3StrGadSIBuff, 1);
- CollapseCtrl(&Key->Vanilla[4], KRDVanillaMod4StrGadSIBuff, 1);
- CollapseCtrl(&Key->Vanilla[5], KRDVanillaMod5StrGadSIBuff, 1);
- break;
- case DPF_DEAD:
- Key->VanillaLen = 1;
- if (KRDVanillaAcc1Gadget.Flags & SELECTED)
- Key->Vanilla[0] = 1;
- else if (KRDVanillaAcc2Gadget.Flags & SELECTED)
- Key->Vanilla[0] = 2;
- else if (KRDVanillaAcc3Gadget.Flags & SELECTED)
- Key->Vanilla[0] = 3;
- else if (KRDVanillaAcc4Gadget.Flags & SELECTED)
- Key->Vanilla[0] = 4;
- else
- Key->Vanilla[0] = 5;
- Key->Vanilla[1] = '\x00';
- } /* switch */
- break;
- case KCF_NOP:
- break;
- } /* switch */
- }
-
- /*
- * Update Key Map
- */
- void UpdateKeyMap(Key, KeyCode)
- struct KeyNode *Key;
- USHORT KeyCode;
- {
- struct HalfKeyMap *HalfKeyMap;
- ULONG KeyMapVal;
- UBYTE *KeyMapPtr;
- UBYTE buff[256];
- UBYTE len, offsets;
-
- if (KeyCode < 0x40)
- HalfKeyMap = (struct HalfKeyMap *)&KeyMapNode->kn_KeyMap;
- else {
- HalfKeyMap = (struct HalfKeyMap *)&KeyMapNode->kn_KeyMap.km_HiKeyMapTypes;
- KeyCode -= 0x40;
- }
- switch (HalfKeyMap->KeyMapTypes[KeyCode] & (KCF_STRING|KCF_DEAD|KCF_NOP)) {
- case KC_NOQUAL:
- HalfKeyMap->KeyMapTypes[KeyCode] = KCF_NOP;
- HalfKeyMap->KeyMap[KeyCode] = NULL;
- break;
- case KCF_STRING:
- len = StringKeyLength(HalfKeyMap, KeyCode, &offsets);
- FreeMem((char *)HalfKeyMap->KeyMap[KeyCode], len);
- HalfKeyMap->KeyMapTypes[KeyCode] = KCF_NOP;
- HalfKeyMap->KeyMap[KeyCode] = NULL;
- break;
- case KCF_DEAD:
- len = DeadKeyLength(HalfKeyMap, KeyCode, &offsets);
- FreeMem((char *)HalfKeyMap->KeyMap[KeyCode], len);
- HalfKeyMap->KeyMapTypes[KeyCode] = KCF_NOP;
- HalfKeyMap->KeyMap[KeyCode] = NULL;
- break;
- } /* switch */
- switch (Key->Type & (KCF_STRING|KCF_DEAD|KCF_NOP)) {
- case KC_NOQUAL:
- KeyMapVal = Key->Alone[0];
- if (Key->Type & KCF_SHIFT)
- KeyMapVal |= Key->Shift[0]<<8;
- else if (Key->Type & KCF_ALT)
- KeyMapVal |= Key->Alt[0]<<8;
- else if (Key->Type & KCF_CONTROL)
- KeyMapVal |= Key->Ctrl[0]<<8;
- if ((Key->Type & KCF_ALT) && (Key->Type & KCF_SHIFT))
- KeyMapVal |= Key->Alt[0]<<16;
- else if ((Key->Type & KCF_CONTROL) && (Key->Type & (KCF_SHIFT|KCF_ALT)))
- KeyMapVal |= Key->Ctrl[0]<<16;
- if ((Key->Type & (KCF_SHIFT|KCF_ALT)) == (KCF_SHIFT|KCF_ALT))
- KeyMapVal |= Key->ShiftAlt[0]<<24;
- else if ((Key->Type & (KCF_CONTROL|KCF_SHIFT)) == (KCF_CONTROL|KCF_SHIFT))
- KeyMapVal |= Key->CtrlShift[0]<<24;
- else if ((Key->Type & (KCF_CONTROL|KCF_ALT)) == (KCF_CONTROL|KCF_ALT))
- KeyMapVal |= Key->CtrlAlt[0]<<24;
- break;
- case KCF_STRING:
- buff[len = 0] = Key->AloneLen;
- if (Key->Type & KCF_SHIFT)
- buff[len += 2] = Key->ShiftLen;
- if (Key->Type & KCF_ALT)
- buff[len += 2] = Key->AltLen;
- if ((Key->Type & (KCF_SHIFT|KCF_ALT)) == (KCF_SHIFT|KCF_ALT))
- buff[len += 2] = Key->ShiftAltLen;
- if (Key->Type & KCF_CONTROL)
- buff[len += 2] = Key->CtrlLen;
- if ((Key->Type & (KCF_CONTROL|KCF_SHIFT)) == (KCF_CONTROL|KCF_SHIFT))
- buff[len += 2] = Key->CtrlShiftLen;
- if ((Key->Type & (KCF_CONTROL|KCF_ALT)) == (KCF_CONTROL|KCF_ALT))
- buff[len += 2] = Key->CtrlAltLen;
- if ((Key->Type & KC_VANILLA) == KC_VANILLA)
- buff[len += 2] = Key->VanillaLen;
- memcpy(&buff[len += 2], Key->Alone, Key->AloneLen);
- buff[offsets = 1] = len;
- len += Key->AloneLen;
- if (Key->Type & KCF_SHIFT) {
- memcpy(&buff[len], Key->Shift, Key->ShiftLen);
- buff[offsets += 2] = len;
- len += Key->ShiftLen;
- }
- if (Key->Type & KCF_ALT) {
- memcpy(&buff[len], Key->Alt, Key->AltLen);
- buff[offsets += 2] = len;
- len += Key->AltLen;
- }
- if ((Key->Type & (KCF_SHIFT|KCF_ALT)) == (KCF_SHIFT|KCF_ALT)) {
- memcpy(&buff[len], Key->ShiftAlt, Key->ShiftAltLen);
- buff[offsets += 2] = len;
- len += Key->ShiftAltLen;
- }
- if (Key->Type & KCF_CONTROL) {
- memcpy(&buff[len], Key->Ctrl, Key->CtrlLen);
- buff[offsets += 2] = len;
- len += Key->CtrlLen;
- }
- if ((Key->Type & (KCF_CONTROL|KCF_SHIFT)) == (KCF_CONTROL|KCF_SHIFT)) {
- memcpy(&buff[len], Key->CtrlShift, Key->CtrlShiftLen);
- buff[offsets += 2] = len;
- len += Key->CtrlShiftLen;
- }
- if ((Key->Type & (KCF_CONTROL|KCF_ALT)) == (KCF_CONTROL|KCF_ALT)) {
- memcpy(&buff[len], Key->CtrlAlt, Key->CtrlAltLen);
- buff[offsets += 2] = len;
- len += Key->CtrlAltLen;
- }
- if ((Key->Type & KC_VANILLA) == KC_VANILLA) {
- memcpy(&buff[len], Key->Vanilla, Key->VanillaLen);
- buff[offsets += 2] = len;
- len += Key->VanillaLen;
- }
- break;
- case KCF_DEAD:
- buff[len = 0] = Key->AloneOpt;
- if (Key->Type & KCF_SHIFT)
- buff[len += 2] = Key->ShiftOpt;
- if (Key->Type & KCF_ALT)
- buff[len += 2] = Key->AltOpt;
- if ((Key->Type & (KCF_SHIFT|KCF_ALT)) == (KCF_SHIFT|KCF_ALT))
- buff[len += 2] = Key->ShiftAltOpt;
- if (Key->Type & KCF_CONTROL)
- buff[len += 2] = Key->CtrlOpt;
- if ((Key->Type & (KCF_CONTROL|KCF_SHIFT)) == (KCF_CONTROL|KCF_SHIFT))
- buff[len += 2] = Key->CtrlShiftOpt;
- if ((Key->Type & (KCF_CONTROL|KCF_ALT)) == (KCF_CONTROL|KCF_ALT))
- buff[len += 2] = Key->CtrlAltOpt;
- if ((Key->Type & KC_VANILLA) == KC_VANILLA)
- buff[len += 2] = Key->VanillaOpt;
- len += 2;
- switch (Key->AloneOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- buff[offsets = 1] = Key->Alone[0];
- break;
- case DPF_MOD:
- memcpy(&buff[len], Key->Alone, 6);
- buff[offsets = 1] = len;
- len += 6;
- } /* switch */
- if (Key->Type & KCF_SHIFT)
- switch (Key->ShiftOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- buff[offsets += 2] = Key->Shift[0];
- break;
- case DPF_MOD:
- memcpy(&buff[len], Key->Shift, 6);
- buff[offsets += 2] = len;
- len += 6;
- } /* switch */
- if (Key->Type & KCF_ALT)
- switch (Key->AltOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- buff[offsets += 2] = Key->Alt[0];
- break;
- case DPF_MOD:
- memcpy(&buff[len], Key->Alt, 6);
- buff[offsets += 2] = len;
- len += 6;
- } /* switch */
- if ((Key->Type & (KCF_SHIFT|KCF_ALT)) == (KCF_SHIFT|KCF_ALT))
- switch (Key->ShiftAltOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- buff[offsets += 2] = Key->ShiftAlt[0];
- break;
- case DPF_MOD:
- memcpy(&buff[len], Key->ShiftAlt, 6);
- buff[offsets += 2] = len;
- len += 6;
- } /* switch */
- if (Key->Type & KCF_CONTROL)
- switch (Key->CtrlOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- buff[offsets += 2] = Key->Ctrl[0];
- break;
- case DPF_MOD:
- memcpy(&buff[len], Key->Ctrl, 6);
- buff[offsets += 2] = len;
- len += 6;
- } /* switch */
- if ((Key->Type & (KCF_CONTROL|KCF_SHIFT)) == (KCF_CONTROL|KCF_SHIFT))
- switch (Key->CtrlShiftOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- buff[offsets += 2] = Key->CtrlShift[0];
- break;
- case DPF_MOD:
- memcpy(&buff[len], Key->CtrlShift, 6);
- buff[offsets += 2] = len;
- len += 6;
- } /* switch */
- if ((Key->Type & (KCF_CONTROL|KCF_ALT)) == (KCF_CONTROL|KCF_ALT))
- switch (Key->CtrlAltOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- buff[offsets += 2] = Key->CtrlAlt[0];
- break;
- case DPF_MOD:
- memcpy(&buff[len], Key->CtrlAlt, 6);
- buff[offsets += 2] = len;
- len += 6;
- } /* switch */
- if ((Key->Type & KC_VANILLA) == KC_VANILLA)
- switch (Key->VanillaOpt) {
- case KC_NOQUAL:
- case DPF_DEAD:
- buff[offsets += 2] = Key->Vanilla[0];
- break;
- case DPF_MOD:
- memcpy(&buff[len], Key->Vanilla, 6);
- buff[offsets += 2] = len;
- len += 6;
- } /* switch */
- break;
- case KCF_NOP:
- KeyMapVal = NULL;
- } /* switch */
- if (Key->Type & (KCF_STRING|KCF_DEAD)) {
- if ((KeyMapPtr = (char *)AllocMem(len, MEMF_CLEAR)) != NULL)
- memcpy(KeyMapPtr, buff, len);
- else {
- Write(Output(), "Memory Allocation Failed, UpdateKeyMap\n", 39);
- Key->Type = KCF_NOP;
- HalfKeyMap->KeyMap[KeyCode] = NULL;
- }
- HalfKeyMap->KeyMap[KeyCode] = (ULONG)KeyMapPtr;
- }
- else
- HalfKeyMap->KeyMap[KeyCode] = KeyMapVal;
- HalfKeyMap->KeyMapTypes[KeyCode] = Key->Type;
- if (Key->Capsable)
- HalfKeyMap->Capsable[KeyCode/8] |= (1<<(KeyCode % 8));
- else
- HalfKeyMap->Capsable[KeyCode/8] &= ~(1<<(KeyCode % 8));
- if (Key->Repeatable)
- HalfKeyMap->Repeatable[KeyCode/8] |= (1<<(KeyCode % 8));
- else
- HalfKeyMap->Repeatable[KeyCode/8] &= ~(1<<(KeyCode % 8));
- }
-
- /*
- * Expand Control Characters
- */
- int ExpandCtrl(to, from, len)
- unsigned char *to;
- unsigned char *from;
- int len;
- {
- int reslen = 0;
- int count;
-
- for (count = 0; count < len; count++)
- if ((from[count] > '\x20') && (from[count] < '\x7F') && (from[count] != '\\'))
- to[reslen++] = from[count];
- else
- switch (from[count]) {
- case '\n':
- to[reslen++] = '\\';
- to[reslen++] = 'n';
- break;
- case '\t':
- to[reslen++] = '\\';
- to[reslen++] = 't';
- break;
- case '\v':
- to[reslen++] = '\\';
- to[reslen++] = 'v';
- break;
- case '\b':
- to[reslen++] = '\\';
- to[reslen++] = 'b';
- break;
- case '\r':
- to[reslen++] = '\\';
- to[reslen++] = 'r';
- break;
- case '\f':
- to[reslen++] = '\\';
- to[reslen++] = 'f';
- break;
- case '\\':
- to[reslen++] = '\\';
- to[reslen++] = '\\';
- break;
- default:
- to[reslen++] = '\\';
- to[reslen++] = 'x';
- if (from[count] < 0x10)
- to[reslen++] = '0';
- reslen += stci_h(&to[reslen], from[count]);
- } /* switch */
- to[reslen] = '\x00';
- return(reslen-1);
- }
-
- /*
- * Collapse Ctrl
- */
- int CollapseCtrl(to, from, maxlen)
- char *to;
- char *from;
- int maxlen;
- {
- int reslen = 0;
- int count, offset, num;
- char digit;
-
- for (count = 0; from[count] && (reslen < maxlen);)
- if (from[count] != '\\')
- to[reslen++] = from[count++];
- else {
- offset = 1;
- switch (from[count+1]) {
- case 'N':
- case 'n':
- to[reslen++] = '\n';
- break;
- case 'T':
- case 't':
- to[reslen++] = '\t';
- break;
- case 'V':
- case 'v':
- to[reslen++] = '\v';
- break;
- case 'B':
- case 'b':
- to[reslen++] = '\b';
- break;
- case 'R':
- case 'r':
- to[reslen++] = '\r';
- break;
- case 'F':
- case 'f':
- to[reslen++] = '\f';
- break;
- case '\\':
- to[reslen++] = '\\';
- break;
- case 'X':
- case 'x':
- num = 0;
- for (offset++; ((offset < 4) && (digit = tolower(from[count+offset])) && (isxdigit(digit))); offset++)
- if (isdigit(digit))
- num = (num<<4) | (digit-0x30);
- else
- num = (num<<4) | (tolower(digit)-0x57);
- to[reslen++] = num;
- break;
- default:
- num = 0;
- for (;((offset < 4) && (digit = from[count+offset]) && ((digit >= '0') && (digit <= '7'))); offset++)
- num = (num<<3) | (digit - 0x30);
- to[reslen++] = num;
- } /* switch */
- if (offset > 3)
- offset -= 1;
- count += (1 + offset);
- }
- return(reslen);
- }
-